Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ÿþ* -> Textdatei wird nicht vollständig geladen! (https://www.delphipraxis.net/79028-%FF%FE%2A-textdatei-wird-nicht-vollstaendig-geladen.html)

viperen 15. Okt 2006 09:50


ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Hallo!

Ich versuche seit gestern abend ( :shock: ) eine Textdatei in ein Memofeld oder Stringlist zu laden... Leider ohne Erfolg!

Es wird immer nur "ÿþ" und dann das erste Zeichen aus der Datei angezeigt.

Könnt ihr mir bitte helfen?!

Danke!

PS: Datei hat *.txt Endung!

Balu der Bär 15. Okt 2006 09:53

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Es wäre sinnvoll wenn du uns einfach mal deinen Code wie du es bereits probiert hast zeigst.

Ansonsten ginge das doch einfach per Memo.Lines.LoadFromFile(Datei). :gruebel:

DGL-luke 15. Okt 2006 09:58

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Das ist ganz eindeutig das Symptom, wenn man Unicode-Text in ein ANSI-Format lädst.

Du brauchst also Unicdoe-fähige Komponenten.

chaosben 15. Okt 2006 09:59

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Zitat:

Zitat von viperen
PS: Datei hat *.txt Endung!

Das heißt nicht, das es auch ein Text-Datei ist. Das was du da schreibst, sieht mehr nach einer Datei aus, die Zeichen enthält, die man schlecht as Text darstellen kann. Wahrscheinlich ist in der Datei ein 0-Byte enthalten, was dazu führt, das deine Text-Komponente aufhört den Text darzustellen.

Öffne die Datei zu Spass doch mal mit einem Hexeditor. Wahrscheinlich wirst du dich wundern. :)

viperen 15. Okt 2006 10:01

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Also angefangen habe ich mit

Delphi-Quellcode:
Memo1.Lines.LoadFromFile('textdatei.txt');
dann kam

Delphi-Quellcode:
Stringlist.LoadFromFile('textdatei.txt');
anschließend

Delphi-Quellcode:
AssignFile(f,'textdatei.txt');
Reset(f);
repeat
  Readln(f,s);
  Memo1.Lines.Add(s)
until eof(f);
CloseFile(f);
und dann noch

Eine Stream erstellt mit der Textdatei.txt und dann

Delphi-Quellcode:
Memo1.Lines.LoadFromStream(Stream);
soo..

Gedacht habe ich mir vielleicht die Datei Zeichenweise auszulesen aber ich weiß nicht wie ich das machen soll.. :pale:


Zitat:

Zitat von chaosben
Zitat:

Zitat von viperen
PS: Datei hat *.txt Endung!

Das heißt nicht, das es auch ein Text-Datei ist. Das was du da schreibst, sieht mehr nach einer Datei aus, die Zeichen enthält, die man schlecht as Text darstellen kann. Wahrscheinlich ist in der Datei ein 0-Byte enthalten, was dazu führt, das deine Text-Komponente aufhört den Text darzustellen.

Öffne die Datei zu Spass doch mal mit einem Hexeditor. Wahrscheinlich wirst du dich wundern. :)

Ähmm.. es ist ein ganz normaler Text in der Datei...

Da ist am Anfang ein Datum, dann sind Dateinamen aufgelistet. Geöffnet habe ich Sie mit dem Windows Editor...

Zitat:

Zitat von DGL-luke
Das ist ganz eindeutig das Symptom, wenn man Unicode-Text in ein ANSI-Format lädst.

Du brauchst also Unicdoe-fähige Komponenten.

Und wie mach ich das?? Oder wo finde ich eine?

DGL-luke 15. Okt 2006 10:05

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Die Windows-API ist unicodefähig. Du müsstest dir also eine Textbox erstellen, in die kannst du dann unicode reinschreiben.

Ansonsten gibts noch die Hier im Forum suchenTNT-Controls. Ob die JVCL Unicode-fähig ist, weiß ich nicht.

viperen 15. Okt 2006 10:08

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Tatsächlich.. es sind 0 Bytes dazwischen..

Was soll ich nun tun?! Ist das wegen dem Unicode?

Rein aus Interesse: Wie kann ich denn überhaupt Dateien Zeichenweise auslesen?

DGL-luke 15. Okt 2006 10:14

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Zeichenweise?

Du kannst sie in einem Stream laden:

Delphi-Quellcode:
with TFileStream.Create('file.txt',fmOpenRead) do
while Position < Size do
  Read(c,sizeof(c));
Damit liest du jedes einzelne Zeichen der Datei file.txt nacheinander in die Char-Variable c ein.

Klaus01 15. Okt 2006 10:20

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Zitat:

Zitat von DGL-luke
Zeichenweise?

Du kannst sie in einem Stream laden:

Delphi-Quellcode:
with TFileStream.Create('file.txt',fmOpenRead) do
while Position < Size do
  Read(c,sizeof(c));
Damit liest du jedes einzelne Zeichen der Datei file.txt nacheinander in die Char-Variable c ein.

Vielleicht vorher noch die Position auf 0 setzen.

Grüße
Klaus

r2c2 15. Okt 2006 10:22

Re: ÿþ* -> Textdatei wird nicht vollständig geladen!
 
Auf dem Weg wäre es auch möglich ohne TNT-Controls die Datei einzulesen. Einfach Byteweise vorgehen und #0, sowie die ersten 2 Bytes überlesen. Oder in n Widestring packen und den in ANSI-Konvertieren. Dabei gehen allerdings alle nicht-ANSI-Zeichen verloren. Besser also gleich Unicode-fähige Komponenten nehmen...

mfg

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.
Seite 1 von 2  1 2      

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