Forum: Object-Pascal / Delphi-Language
Delphi
by patty,
16. Dez 2003
:drunken: Ich muss doch getraeumt haben! Der Fehler ist ja offensichtlich und wurde auch weiter oben glaub ich schon mal angesprochen. Du wandelst mit WideString(...) ein AnsiString in ein WideString um, beachtest aber nicht, dass diese Umwandlung nur temporaer geschieht. Du speicherst also einen Pointer auf einen Speicherbereich, der nach Ausfuehrung der Codezeile wieder freigegeben wird....
Forum: Object-Pascal / Delphi-Language
Delphi
by patty,
16. Dez 2003
"Umwandlen" natuerlich nicht im Sinne von Konvertieren, sondern so, dass ich eben hinterher vom Datentyp her als PWideChar auf den Speicherbereich zugreife :wink:
Forum: Object-Pascal / Delphi-Language
Delphi
by patty,
15. Dez 2003
Aber sollte das String-Array nicht gerade in ein PWideChar-Array umgewandelt werden? Genau das sollte diese Schleife naemlich tun. Der Fehler steckt offenbar woanders; vielleicht bei der Ausgabe... Oder machst du noch irgendwas mit dem PWideChar-Array?
Probier mal fuer die Ausgabe folgenden Code:
for i := 0 to AnzahlEintraege-1 do Application.MessageBox(@AnsiString(SItemID), 'Debug');
...
Forum: Object-Pascal / Delphi-Language
Delphi
by patty,
15. Dez 2003
Die Fehlermeldung ist korrekt - sowas nimmt Delphi ganz genau. Ein PWideChar ist ein Zeiger auf ein WideChar. Das nullterminierte String entsteht lediglich dadurch, dass der Zeiger intern solange erhoeht wird, bis ein CHR(0) kommt. Du musst also im Endeffekt bei der Wertzuweisung einen Zeiger auf das erste Zeichen des Strings uebergeben:
SItemID := @WideString(NewItmes);
Das sollte...