Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DOS Text-Datei in Delphi 2009 einlesen (https://www.delphipraxis.net/137271-dos-text-datei-delphi-2009-einlesen.html)

TUX_der_Pinguin 17. Jul 2009 12:58


DOS Text-Datei in Delphi 2009 einlesen
 
Ich habe ein kleines Test-Programm gebastelt welches mir eine ASCII Datei einließt, dabei soll der Text entsprechend
umgewandelt werden so das Sonderzeichen/Umlaute korrekt dargestellt werden, jedoch habe ich Probleme mit der Anwendung
von "OemToChar" unter Delphi 2007 war dies noch problemlos möglich jedoch unter Delphi 2009 macht mir die Prozedur
doch arge Probleme.

In dem folgenden beispiel tritt ein Stacküberlauf auf. Ich weiß nicht weiter im moment und hoffe auf die Hilfe der DPler.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  FHandle : System.Text;
  sRow : AnsiString;
  Text : String;
  i : byte;

begin

  System.Assign(FHandle, 'u:\test.txt');
  {$I-}
  Reset(FHandle);
  {$I+}
  if IoResult = 0 then begin
    while not EOF(FHandle) do begin

      //Zeile einlesen
      Readln(FHandle, sRow);

      //Zeile umwandeln
      OemToChar(PAnsiChar(sRow), PWideChar(Text));

      //Zeile anzeigen
      ShowMessage(Trim(sRow));

    end;
    System.Close(FHandle);
  end;

end;

himitsu 17. Jul 2009 13:22

Re: DOS Text-Datei in Delphi 2009 einlesen
 
Sag bitte nicht, daß dieser Code wirklich (etwa) so unter einer anderen Delphiversion, wie 2007, funktioniert ... das sollte dort genauso gehn, wie auch unter D2009.

Delphi-Quellcode:
OemToChar(PAnsiChar(sRow), PWideChar(Text));
vielleicht solltest du mal Speicher für Text reservieren,
denn wo soll denn sonst der String hinkopiert werden?



Delphi-Quellcode:
//Zeile umwandeln
SetLength(Text, Length(sRow));
OemToChar(PAnsiChar(sRow), PWideChar(Text));

//Zeile anzeigen
ShowMessage(Trim(Text)); // wolltest du nicht Text angezeigt haben?

Uwe Raabe 17. Jul 2009 13:29

Re: DOS Text-Datei in Delphi 2009 einlesen
 
Ist System.Text in D2009 nicht sowas wie File of WideChar?

himitsu 17. Jul 2009 13:33

Re: DOS Text-Datei in Delphi 2009 einlesen
 
System.Text: Nein, WideString/UnicodeString wird intern alles nach AnsiString umgebogen
(sonst wären diese Funktionen nicht mehr kompatibel zu älteren Delphi-Versionen)

TUX_der_Pinguin 17. Jul 2009 14:31

Re: DOS Text-Datei in Delphi 2009 einlesen
 
Zitat:

Zitat von himitsu
Sag bitte nicht, daß dieser Code wirklich (etwa) so unter einer anderen Delphiversion, wie 2007, funktioniert ... das sollte dort genauso gehn, wie auch unter D2009.

Delphi-Quellcode:
OemToChar(PAnsiChar(sRow), PWideChar(Text));
vielleicht solltest du mal Speicher für Text reservieren,
denn wo soll denn sonst der String hinkopiert werden?



Delphi-Quellcode:
//Zeile umwandeln
SetLength(Text, Length(sRow));
OemToChar(PAnsiChar(sRow), PWideChar(Text));

//Zeile anzeigen
ShowMessage(Trim(Text)); // wolltest du nicht Text angezeigt haben?

Du hast Recht himitsu, ich hab vergessen den Speicher zureservieren, und ja ich wollte natürlich den umgewandelten Text anzeigen.

Machmal sieht mal die einfachsten Dinge nicht mehr.

Vielen dank für eure Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.

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