mam Delphi kod 2007, który wygląda tak:Pisanie ciąg do TFileStream w Delphi 2010
procedure WriteString(Stream: TFileStream; var SourceBuffer: PChar; s: string);
begin
StrPCopy(SourceBuffer,s);
Stream.Write(SourceBuffer[0], StrLen(SourceBuffer));
end;
nazywam go tak:
var
SourceBuffer : PChar;
MyFile: TFileStream;
....
SourceBuffer := StrAlloc(1024);
MyFile := TFileStream.Create('MyFile.txt',fmCreate);
WriteString(MyFile,SourceBuffer,'Some Text');
....
ta pracowała w Delphi 2007, ale daje mi dużo niechcianych postaci w Delphi 2010. Wiem, że to jest spowodowane problemami z niezgodnością z Unicode, ale nie jestem pewien, jak rozwiązać ten problem.
Oto co próbowałem dotąd:
Zmień typ danych SourceBuffer (a także parametr oczekiwaniami WideString) do PWideChar
Każdy z suggestions listed here
Co robię źle?
Ten pracował dla mnie po usunięciu "self.WriteBuffer (len, 4);" - to było pisanie bełkotliwych znaków do pliku wyjściowego. – JosephStyons
Te "bełkotliwe znaki" to długość napisu, więc funkcja czytania wie, ile można odczytać. Jeśli potrzebujesz tego jako zwykłego tekstu, będziesz potrzebował innego sposobu, aby powiedzieć readString, gdzie zatrzymać. –
Piszę ten plik dla innej aplikacji, aby go wczytać, więc nie jest ważne, czy będę mógł go ponownie wczytać. – JosephStyons