chriss_2oo4
Erfahrenes Mitglied
Hi,
ein Ähnliches Problem gibt es schon paar Threads weiter unten, hilft mir aber nicht wirklich weiter.
(-> Objekte wie CString oder String kann ich nicht verwenden )
Ich möchte meiner Funktion (CheckValidty) einen Out-Parameter (pcErrorReport), also Call-by-Referenz, übergeben und diesen in meiner Funktion bearbeiten.
Die Funktion sieht so aus:
int CheckValidty( LPCSTR pcPath, LPSTR pcErrorReport )
{
...
pcErrorReport = myCString.GetBuffer();
...
}
In der Main rufe ich die Funktion wie gefolgt auf:
int main()
{
...
char * pcErrorReport;
CheckValidty( "c:\\derPfad", pcErrorReport);
...
}
Wenn ich so vorgehe bekomm ich die Fehlermeldung, dass ich den Zeiger pcErrorReport nicht initialisiert hätte, aber wozu muss ich dass denn machen, ich möchte ihn ja nur auf eine Speicheradresse zeigen lassen, die bis dato noch garnicht beschrieben wurde?
Jetzt bin ich mir nicht ganz sicher, aber die methode geht doch wie gefolgt vor:
1. Erstellung eines Zeigers auf char
2. Zeiger zeigt auf die Adresse im Speicher, die von der Methode GetBuffer() im Speicher abgelegt wurde.
3. Funktion wird verlassen -> der, von der Funktion allokierte Speicher, wird wieder freigegeben -> ergo zeigt auch mein Zeiger auf eine leere Adresse
Des Weiteren hab ich noch nicht verstanden, wieso häufig zu einem Zeiger die Länge mit übergeben wird, denn der Zeiger zeigt doch immer auf die erste Adresse im char array und es ist doch eigentlich egal wie lang das Array werden soll?
So das waren jetzt viele Fragen, aber ich denke das es für einen C++ 'ler kein Problem ist mir diese Fragen zu beantworten -> bin mit java und c# aufgewachsen und deshalb ist mir c++ etwas suspekt![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Lg Chriss
ein Ähnliches Problem gibt es schon paar Threads weiter unten, hilft mir aber nicht wirklich weiter.
(-> Objekte wie CString oder String kann ich nicht verwenden )
Ich möchte meiner Funktion (CheckValidty) einen Out-Parameter (pcErrorReport), also Call-by-Referenz, übergeben und diesen in meiner Funktion bearbeiten.
Die Funktion sieht so aus:
int CheckValidty( LPCSTR pcPath, LPSTR pcErrorReport )
{
...
pcErrorReport = myCString.GetBuffer();
...
}
In der Main rufe ich die Funktion wie gefolgt auf:
int main()
{
...
char * pcErrorReport;
CheckValidty( "c:\\derPfad", pcErrorReport);
...
}
Wenn ich so vorgehe bekomm ich die Fehlermeldung, dass ich den Zeiger pcErrorReport nicht initialisiert hätte, aber wozu muss ich dass denn machen, ich möchte ihn ja nur auf eine Speicheradresse zeigen lassen, die bis dato noch garnicht beschrieben wurde?
Jetzt bin ich mir nicht ganz sicher, aber die methode geht doch wie gefolgt vor:
1. Erstellung eines Zeigers auf char
2. Zeiger zeigt auf die Adresse im Speicher, die von der Methode GetBuffer() im Speicher abgelegt wurde.
3. Funktion wird verlassen -> der, von der Funktion allokierte Speicher, wird wieder freigegeben -> ergo zeigt auch mein Zeiger auf eine leere Adresse
Des Weiteren hab ich noch nicht verstanden, wieso häufig zu einem Zeiger die Länge mit übergeben wird, denn der Zeiger zeigt doch immer auf die erste Adresse im char array und es ist doch eigentlich egal wie lang das Array werden soll?
So das waren jetzt viele Fragen, aber ich denke das es für einen C++ 'ler kein Problem ist mir diese Fragen zu beantworten -> bin mit java und c# aufgewachsen und deshalb ist mir c++ etwas suspekt
![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Lg Chriss