![]() |
datei einlesen und in memo schreiben
hi und guten tag,
ich habe ein problem mit einer datei die sich so einfach leider nicht einlesen läßt. das problem liegt darin das mehrere Rechnungen in eine Datei geschrieben werden aber in dieser datei die verschiedenen Rechnungen mit #1013 voneinander getrennt sind. so interpretiert Delphi dies nun als Dateiende was ja so nicht stimmt. weiß jemand wie ich dieses umgehen kann und mir den Text der gesamten Datei dann in einem Memo ausgeben lassen kann? gruß Jority |
Re: datei einlesen und in memo schreiben
hi,
dumme antwort, aber funzt net Memo1.Lines.LoadFromFile(); ??? :?: |
Re: datei einlesen und in memo schreiben
Wie ließt du dies den momentan ein?
Meinst du nicht #10#13? |
Re: datei einlesen und in memo schreiben
ja ich meine #10#13.
und nein leider funzt memo1.lines.loadfromfile(datei); nicht. da liegt ja eben der hund begraben. gruß jority |
Re: datei einlesen und in memo schreiben
Hast du die Datei schonmal versucht mittels ner Schleife mit ReadLn einzulesen?
|
Re: datei einlesen und in memo schreiben
weiß jetzt grad garnicht so wirklich wie ich das machen müsste kannst du ein kleines beispiel posten?
|
Re: datei einlesen und in memo schreiben
versuchs doch mal damit
Delphi-Quellcode:
[..]
var fromf: textfile; speicher: string; begin assigenfile(fromf, 'deine datei'); reset(fromf); repeat readln(fromf, speicher); until(EOF(fromf)); end; |
Re: datei einlesen und in memo schreiben
Vorsicht, eine Kopfgesteuerte Schleife (while) wäre hier besser, da deine Schleife ja mindest einmal durchlaufen wird. Und wenn die Datei leer ist ....
Also:
Delphi-Quellcode:
var fromf: textfile;
speicher: string; begin assigenfile(fromf, 'deine datei'); reset(fromf); while not EoF(fromf) do begin readln(fromf, speicher); Memo.Lines.Add(speicher); end; end; |
Re: datei einlesen und in memo schreiben
ok da hast du recht!
dann sollten wir aber auch vorher noch prüfen ob die datei existiert!
Delphi-Quellcode:
oder mit einem OpenDialog1
[..]
if fileexists('deine Datei') then begin // der rest von vorher end;
Delphi-Quellcode:
:mrgreen:
if OpenDialog1.execute then
begin assignfile(fromf, OpenDialog1.filename); // der ... end; |
Re: datei einlesen und in memo schreiben
Natürlich. :zwinker:
Zitat:
|
Re: datei einlesen und in memo schreiben
oh man jungs ich liebe euch
so hat es wunderbar gefunzt jetzt kann ich endlich weiterarbeiten. fettes DANKESCHÖN an euch! gruß Jority |
Re: datei einlesen und in memo schreiben
oh shit mir ist da jetzt ein grausamer Fehler aufgefallen.
ich habe mir das mal angesehen was im Memo steht und mir ist dabei aufgefallen das komplette Zeilen fehlen. da diese Zeile zwischen #0A#00 und #0A stehen. weiß jemand wie ich diese Datei einlesen kann um trotzdem alle zeilen im memo stehen zu haben. Stichwort Binär einlesen? gruß jority |
Re: datei einlesen und in memo schreiben
So ist das alles viel zu theoretisch was du hier an Infos bringst. Kannst du die Datei mit NotePad oder sonstwas korrekt öffnen?
Zitat:
|
Re: datei einlesen und in memo schreiben
so hier ein kurzer ausschnitt
da beginnt eine neue rechnung: @START@ 078693 96611 TU so das Problem ist das ganz am Anfang der Datei dieses noch mit eingelesen wird, dies aber später nicht mehr mit angezeigt wird. wenn man das ganze im Hex anschaut dann sieht es so aus als würde an dieser Stelle eine komplett neue Datei stehen die dann bis zum nächsten: @START@ 078693 96611 TU geht. irgendwie ist das ziemlich verwirrend und das scheit das memo bzw. delphi genauso zu sehen. (mein arbeitskollege hat angeregt die datei binär einzulesen und dabei nach diesen zeichen zu suchen) gruß jority |
Re: datei einlesen und in memo schreiben
Moin Jority,
Du könntest Die Datei, ähnlich wie's der Kollege vorgeschlagen hat, mit Hilfe von ![]() ![]() Bei grösseren Dateien müsstest Du die Datei dann sinnvoller Weise Blockweise einlesen, aber auch dafür kannst Du einen String als Buffer verwenden. Ob die Verwendung von StringReplace auf die Performance drückt, so dass vielleicht ein anderes Verfahren angewendet werden sollte, müsstest Du mal testen. BTW: Der Zeilenvorschub wäre i.d.R. unter Windows #13#10 bzw #$0D#$0A. Nur #10 (bzw. #$0A) wäre in Windows nur in Ausnahmefällen oder bei Unixdateien anzutreffen. Wird eine Datei die nur #10 als Zeilentrenner verwendet in eine StringList eingelesen (wie eben auch Memo.Lines) korrigiert Delphi dies intern auf #13#10. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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