Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Textdatei mit D2 erstellen (https://www.delphipraxis.net/50524-textdatei-mit-d2-erstellen.html)

barf00s 28. Jul 2005 08:41

Re: Textdatei mit D2 erstellen
 
anstelle von widestring PWideChar

MPirnstill 28. Jul 2005 08:55

Re: Textdatei mit D2 erstellen
 
Zitat:

Zitat von barf00s
anstelle von widestring PWideChar

Und was nimmt man dann anstelle von WideStream ?

Gruß
Micha

barf00s 28. Jul 2005 08:59

Re: Textdatei mit D2 erstellen
 
auch nen PWideChar

widestream hab ich ja noch nie gehört

MPirnstill 28. Jul 2005 09:07

Re: Textdatei mit D2 erstellen
 
Zitat:

Zitat von barf00s
auch nen PWideChar

widestream hab ich ja noch nie gehört

Den Typ hatte shmia in der Routine verwendet, welche er mir hier gepostet hatte. Vielleicht ist das ja auch ein Tippfehler und es sollte WideString anstatt WideStream heißen.

Erstmal danke für den Tipp. :thumb: Werde es so bald als möglich ausprobieren.

shmia 28. Jul 2005 12:28

Re: Textdatei mit D2 erstellen
 
Zitat:

Zitat von MPirnstill
Den Typ hatte shmia in der Routine verwendet, welche er mir hier gepostet hatte. Vielleicht ist das ja auch ein Tippfehler und es sollte WideString anstatt WideStream heißen.

Jupp, war ein Tipppfuhler.
Jetzt nochmals den Code (incl. Variante, die den Datentyp WideString umgeht).

Delphi-Quellcode:
procedure SaveWideStringToFile(const filename:string; const ws:WideString);
var
   fs : TFileStream;
   data : WideString;
begin
   data := ' '+ws;
   data[1] := Widechar($FEFF); // BOM = Byte Order Mark
   fs := TFileStream.Create(filename, fmCreate);
   try
      fs.WriteBuffer(data[1], Length(data)*sizeof(Widechar));
   finally
      fs.Free;
   end;
end;


procedure SaveWideStringToFileD2(const filename:string; const data:String);
var
   fs : TFileStream;
   b, buffer : ^Word;
   size : Integer;

   i : Integer;
begin
   size := (Length(data)+1)*2;
   GetMem(buffer, size);

   try
      b := buffer;

      b^:= $FEFF; // BOM = Byte Order Mark
      Inc(b);

      // string kopieren
      for i := 1 to Length(data) do
      begin
         b^ := Ord(data[i]);
         Inc(b);
      end;

      fs := TFileStream.Create(filename, fmCreate);
      try
         fs.WriteBuffer(buffer^, size);
      finally
         fs.Free;
      end;
   finally
      FreeMem(buffer);
   end;
end;

MPirnstill 28. Jul 2005 13:59

Re: Textdatei mit D2 erstellen
 
WOW! :cheers:

Das Schreiben in Unicode klappt richtig super. Danke an euch für die Hilfe. :-D

Ich mußte leider feststellen, daß dies mein Ausgangsproblem dadurch leider nicht beseitigt ist, denn Word fragt immer noch nach, ob es den von ihm erkannten Unicode-Zeichensatz verwenden soll. Aber ich werde die Routine auf jedenfall gut aufheben, falls ich mal wieder mir Unicode hantieren muß. Auch wenn ich sie nicht ganz verstanden habe. Dies mit den Zeigern habe ich nie richtig kapiert.

Falls es interessiert, wie meine Erkenntnisse zum eigentlichen Ausgangsproblem sind:

Ich habe jetzt eine Überschriftzeile und ca. 20 Steuerdatensätze in eine Textdatei geschrieben.
:arrow: Die öffnet Wöööörd ohne nachzufragen. :wall:

Entferne ich manuell alle Datensätze bis auf die Überschriftszeile und den einen mit Umlauten.
:arrow: Wöööörd versucht wieder den Zeichensatz zu ermitteln und scheitert kläglich. :wall:

Ich bin sogar schon dahin gegangen und hab mit dem Window-Editor eine Textdatei erstellt und die Überschriftszeile und den einen Datensatz manuell eingetippt.
:arrow: Auch die kann Wöööörd nicht öffnen. :wall:

Das beweißt mir immerhin das es nicht an der von meimem Progi erstellten Steuerdatei liegen kann sondern an diesem gr##§$?! :evil: Wööööööörrrrd, was mal wieder so schlau sein will.

Okay, daß war nur noch mal um den Frust los zu werden.

Vielen Dank noch mal!

Micha


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 Uhr.
Seite 2 von 2     12   

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