Je Delphi Code 2007 qui ressemble à ceci:écriture d'une chaîne à une TFileStream Delphi 2010
procedure WriteString(Stream: TFileStream; var SourceBuffer: PChar; s: string);
begin
StrPCopy(SourceBuffer,s);
Stream.Write(SourceBuffer[0], StrLen(SourceBuffer));
end;
Je l'appelle comme ceci:
var
SourceBuffer : PChar;
MyFile: TFileStream;
....
SourceBuffer := StrAlloc(1024);
MyFile := TFileStream.Create('MyFile.txt',fmCreate);
WriteString(MyFile,SourceBuffer,'Some Text');
....
Cela a fonctionné dans Delphi 2007, mais me donne beaucoup de caractères indésirables dans Delphi 2010. Je sais que cela est dû à des problèmes de conformité Unicode, mais je ne suis pas sûr de savoir comment résoudre le problème.
Voici ce que j'ai essayé jusqu'à présent:
Modifier le type de données de SourceBuffer (et aussi le paramètre attendu par WideString) à PWIDECHAR
Chacun des suggestions listed here
Qu'est-ce que je fais mal?
Cela a fonctionné pour moi après j'ai enlevé le "self.WriteBuffer (len, 4);" - Qui écrivait des caractères charabia dans le fichier de sortie. – JosephStyons
Ces "caractères charabia" sont la longueur de la chaîne, donc la fonction de lecture sait combien de lire. Si vous avez besoin que ce soit du texte brut, vous aurez besoin d'une autre façon de dire à readString où s'arrêter. –
J'écris ce fichier pour qu'il soit lu par une autre application, il n'est donc pas important que je puisse le relire. – JosephStyons