![]() |
String nach array[0..1024] of Char
Hallo!
Ich habe folgendes Problem: Ich will einen String in einen Array[0..1024] of Char bekommen. Ich habe folgendes Probiert:
Delphi-Quellcode:
Jedoch bekomme ich dann anstatt von C:\ftp immer C:\ftpæx€????. Also den String mit etwas Datenmüll hintendran.
var
MyArray: array[0..1024] of Char; Temp: string; begin CopyMemory(@MyArray, @Temp[1], Length(Temp)); end; Woran liegt das? Ist meine Kopiermöglichkeit so überhaupt richtig? Grüße Faux |
Re: String nach array[0..1024] of Char
Da fehlt warscheinlich das nullzeichen am ende des Strings. Du liest einfach noch den ganzen Müll der noch im Speicher stand mit aus (bis zum Ende oder zum nächsten nullzeichen).
Ratte |
Re: String nach array[0..1024] of Char
mach einfach
Delphi-Quellcode:
bzw.
CopyMemory(@MyArray, @Temp[1], Length(Temp) + 1);
Delphi-Quellcode:
bzw.
CopyMemory(@MyArray, @Temp[1], Length(Temp));
MyArray[Length(Temp)] := #0;
Delphi-Quellcode:
Es fehlt also nur die Abschließende #0
ZerorMemory(@MyArray, SizeOf(MyArray));
CopyMemory(@MyArray, @Temp[1], Length(Temp) + 1); Aber darüber brauchst du dir eigentliche keine Gedanken machen wenn das Array bereits mit #0 gefüllt ist (also mit #0 initialisiert wurde). |
Re: String nach array[0..1024] of Char
Zitat:
Grüße Faux |
Re: String nach array[0..1024] of Char
Zitat:
Danke! Grüße Faux |
Re: String nach array[0..1024] of Char
eigentlich kannst du das auch weglassen weil der Record der dir dort mit den Array übergeben wird bereits mit #0 initialisiert ist. (in deinem TestProgramm musst du es natürlich selbst machen)
|
Re: String nach array[0..1024] of Char
Noch 'ne Möglichkeit:
Delphi-Quellcode:
Gruß Hawkeye
StrPCopy(MyArray, Temp);
|
Re: String nach array[0..1024] of Char
Zitat:
Hat das irgendwelche Nachteile gegenüber meinem Versuch? Grüße Faux |
Re: String nach array[0..1024] of Char
Ich sehe einen Vorteil: es funktioniert zuverlässig mit Leerstrings. Ich habe nicht ausprobiert, wie sich deine Routine in diesem Fall verhält.
Die Funktion gibt es übrigens auch mit Längenbeschränkung: ![]() Gruß Hawkeye |
Re: String nach array[0..1024] of Char
Es gibt ja auch die Windowsfunktionen:
Delphi-Quellcode:
var
MyArray: array[0..1024] of Char; Temp: string; begin Temp := 'Hallo'; {Windows.}lstrcpy(MyArray, @Temp[1]); Showmessage(MyArray); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz