Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich Schreibweise im Filestream optimieren ? (https://www.delphipraxis.net/206323-wie-kann-ich-schreibweise-im-filestream-optimieren.html)

Gandimann 9. Dez 2020 17:35

Wie kann ich Schreibweise im Filestream optimieren ?
 
Hello Friends,
ich schreibe in meinem Custom File ein Paar Strings via Filestream. Aber es kommt immer eine Leerzeichen nach jedem Char.

Es sollte LAMP schreiben aber es schreibt L A M P

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
  var
  fs: TFileStream;
begin

fs := TFileStream.Create('C:\Test1.depp',
                 fmCreate or fmOpenWrite or fmShareDenyWrite);
try
  fs.Position := 23 ;
  fs.WriteBuffer((Char($4c))+(Char($41))+(Char($4d))+(Char($50)),8);

  finally
  fs.Free;;
  end;
end;
Wie kann ich LAMP (ohne Leerzeichen) schreiben ?

Thanks in advance :)

jaenicke 9. Dez 2020 18:11

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Wenn du Ansi-Zeichen statt Unicode schreiben möchtest, musst du AnsiChars oder AnsiStrings verwenden. Dafür kannst du dann aber auch keine Unicodezeichen verwenden. Bist du sicher, dass du das möchtest?

Gandimann 9. Dez 2020 18:32

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Leider ja...
Nebenbei kann ich zwar versuchen alles auf ANSI um zu schreiben.

jaenicke 9. Dez 2020 19:36

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Dann bleibt dir nur auch wirklich überall mit AnsiString usw. zu arbeiten.

Redeemer 9. Dez 2020 19:58

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Also das Programm, das diese Datei dann liest, kann kein UTF-16LE? Nicht mal mit BOM #$FFFE?

Gandimann 9. Dez 2020 20:18

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Thanks Friends,
ich habe hin gegriegt :

Delphi-Quellcode:
procedure TForm1.btn2Click(Sender: TObject);
 var
  buf: array[0..10] of Byte;
   fs: TFileStream;
begin
    fs := TFileStream.Create('C:\Test1.file',
                 fmCreate or fmOpenWrite or fmShareDenyWrite);
  buf[0] := $4b;
  buf[1] := $4f;
  buf[2] := $52;
  buf[3] := $46;
     try
    fs.Position := 23;
    fs.WriteBuffer(buf, 4);
    fs.Position := 0;
    buf[0] := $01;
    buf[1] := $00;
    buf[2] := $01;
    buf[3] := $14;
    fs.WriteBuffer(buf, 4);
    fs.Position := 4;
     buf[0] := $00;
    buf[1] := $00;
    buf[2] := $29;
    buf[3] := $64;
    fs.WriteBuffer(buf, 4);

  finally
    fs.Free;
    ;
  end;
end;

jfheins 9. Dez 2020 21:03

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Zitat:

Zitat von Gandimann (Beitrag 1478830)
Leider ja...
Nebenbei kann ich zwar versuchen alles auf ANSI um zu schreiben.

Ich würde eher versuchen, UTF-8 (ohne BOM) einzusetzen. Das ergibt bei dem String "LAMP" ja genau die gleiche Bytefolge, aber die Wahrscheinlichkeit ist hoch (nahe 100%) dass wenn das andere Programm Unicode kann, es auch UTF8 einlesen möchte.
Delphi Lösungen gibt es sicher, hier eine SO Antwort: https://stackoverflow.com/q/1434413/1974021

Oder auch aus regionalen Quellen: https://www.delphipraxis.net/1378290-post16.html

jaenicke 9. Dez 2020 21:16

AW: Wie kann ich Schreibweise im Filestream optimieren ?
 
Das sieht mir überhaupt nicht danach aus als ginge es um Strings im eigentlichen Sinn, sondern um Bytewerte. Dann geht es so viel einfacher:
Delphi-Quellcode:
procedure TForm1.btn2Click(Sender: TObject);
var
  Value: Integer;
  fs: TFileStream;
begin
  fs := TFileStream.Create('C:\Test1.file', fmCreate or fmOpenWrite or fmShareDenyWrite);
  try
    fs.Position := 23;
    Value := $46524F4B;
    fs.WriteBuffer(Value, 4);
    fs.Position := 0;
    Value := $14010001;
    fs.WriteBuffer(Value, 4);
    fs.Position := 4;
    Value := $64290000;
    fs.WriteBuffer(Value, 4);
  finally
    fs.Free;
  end;
end;
Da sollte das gleiche herauskommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz