ho Delphi codice 2007, che assomiglia a questo:Scrivi stringa in un TFileStream in Delphi 2010
procedure WriteString(Stream: TFileStream; var SourceBuffer: PChar; s: string);
begin
StrPCopy(SourceBuffer,s);
Stream.Write(SourceBuffer[0], StrLen(SourceBuffer));
end;
io lo chiamo così:
var
SourceBuffer : PChar;
MyFile: TFileStream;
....
SourceBuffer := StrAlloc(1024);
MyFile := TFileStream.Create('MyFile.txt',fmCreate);
WriteString(MyFile,SourceBuffer,'Some Text');
....
Questo ha funzionato in Delphi 2007, ma mi dà un sacco di personaggi spazzatura in Delphi 2010. So che questo è dovuto a problemi di conformità unicode, ma non sono sicuro di come affrontare il problema.
Ecco quello che ho provato finora:
Modificare il tipo di dati di SourceBuffer (e anche il parametro atteso da WideString) per PWideChar
Ognuno dei suggestions listed here
Cosa sto sbagliando?
Questo ha funzionato per me dopo ho rimosso il "self.WriteBuffer (len, 4);" - Sta scrivendo alcuni caratteri senza senso nel file di output. – JosephStyons
Questi "caratteri incomprensibili" sono la lunghezza della stringa, quindi la funzione di lettura sa quanto è necessario rileggere. Se è necessario che sia testo normale, è necessario un altro modo per dire a readString dove fermarsi. –
Sto scrivendo questo file per un'altra applicazione per leggerlo, quindi non è importante che io possa leggerlo di nuovo. – JosephStyons