![]() |
txt-file einlesen und bearbeiten
hi ihr lieben,
ich möchte/muss eine txt-file einlesen und beaerbeiten. ich lese sie zeilenweise ein und zwar so:
Delphi-Quellcode:
so, da es sich um eine txt-file handelt mit einem komischen format möchte ich "nur" die ascii zeichen
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile; i:integer; s:string; begin assignfile(f,'c:\test.txt'); reset(f); i:=0; while not EOF(f) do begin readln(f,s); memo1.Lines.Add(s); inc(i) end; 32 bis 126 anzeigen bzw. alle anderen rausschmeißen. weiß da jemand ne lösung? hab leider noch nie mit dem auslesen von txt-dateien gearbeitet und brauche jetzt hilfe :cry: ich hoffe mir kann jemand helfen. gruß Jority [edit=sakura]Bitte Delphi.Tags nutzen! Mfg, sakura[/edit] |
Re: txt-file einlesen und bearbeiten
Hmm... du könntest
Delphi-Quellcode:
nach
hlpstr:='';
for i:=1 to length(s) do begin if s[i] in [#32...#126] then hlpstr:=hlpstr+s[i]; end; next;
Delphi-Quellcode:
einfügen dann müsste es eigentlich gehen!
readln(f,s);
|
Re: txt-file einlesen und bearbeiten
Moin Jority,
das Einlesen kannst Du Dir schon mal vereinfachen: (Voraussetzung: Das Memo soll nicht nur ergänzt werden)
Delphi-Quellcode:
Memo1.Lines.LoadFromFile(....);
So könnte es gehen:
Delphi-Quellcode:
Da bei der Bearbeitung keine Zeichen eingefügt werden, können Quell- und ZielBuffer identisch sein.
var
sBuf : string; iIN : integer; iOUT : integer; begin // Die Anzeige erst einmal unterdrücken Memo1.Lines.BeginUpdate; try // Datei laden Memo1.Lines.LoadFromFile('c:\temp\test.txt'); // In Buffer übernehmen, da das Ansprechen von Text die Geschwindigkeit drückt // (wird jedesmal aus den Lines zusammengesetzt sBuf := Memo1.Lines.Text; // Hierhin die gültigen Zeichen schreiben iOUT := 1; // Alle Zeichen durchgehen for iIN := 1 to length(sBuf) do begin // nicht gültig, dann nächstes Zeichen if not (sBuf[iIN] in [#10,#13,#32..#126]) then continue; // Zeichen übertragen sBuf[iOUT] := sBuf[iIN]; // Auf nächste freie Stelle inc(iOUT); end; // Die gültigen Zeichen wieder zurückschreiben Memo1.Lines.Text := copy(sBuf,1,iOUT-1); finally // Text anzeigen Memo1.Lines.EndUpdate; end; end; Die Zeichen #13#10 stellen den Zeilenvorschub dar, und sollten auch erhalten bleiben. |
Re: txt-file einlesen und bearbeiten
Servus,
Du solltest Dir die Strings erst mal in einer Zwischenvariable speichern und diese dann modifizieren, bevor Du sie dann verändert an das Memo weiter gibst. Sieh mal in der Hilfe unter String-Verarbeitung nach. Dort findest Du dann diverse Funktionen wie delete, concat, pos, etc.,. Das ist alles, was Du benötigst, um die überflüssigen Zeichen rauszukicken. Gruß DANNYBOY |
Re: txt-file einlesen und bearbeiten
hi,
geht leider so auch nicht. also im prinzip soll das alles sowieso nicht im memo angezeigt werden hatte das jetzt nur zum testen. eigentlich soll es so aussehen: datei einlesen bearbeiten bzw. ungültige zeichen rausschmeißen datei erstmal unter neuem namen speichern so sollte es sein bekomme das aber irgendwie nicht so hin bei deinem code chris ist es so das im memo nur dies steht: " und das war es dann. und wenn ich es dann speichern will hab ich eben genau diese anführungsstriche in der neuen txt und sonst nichts. habt ihr vielleicht noch eine idee? ich bin am ende! gruß jority |
Re: txt-file einlesen und bearbeiten
Moin Jority,
dann möchte ich fast mal annehmen, dass Du eine Unicode Datei vorliegen hast. Zum einlesen wäre dann ein FileStream geeignet:
Delphi-Quellcode:
BTW: Vielleicht wäre es noch ganz sinnvoll #09 (Tabulator) mit in die gültigen Zeichen aufzunehmen.
var
fsWork : TFileStream; // Weitere Variablen wie oben begin fsWork := TFileStream.Create('c:\temp\test.txt',fmOpenRead); try sBuf := StringOfChar(#00,fsWork.Size); fsWork.Read(sBuf[1],fsWork.Size); finally FreeAndNil(fsWork); end; // Verarbeitung wie oben beschrieben fsWork := TFileStream.Create('c:\temp\testneu.txt',fmCreate); try fsWork.Write(sBuf[1],iOUT-1); finally FreeAndNil(fsWork); end; end; |
Re: txt-file einlesen und bearbeiten
hi,
das ist genau das was ich gebraucht habe Chris, aber natürlich auch dank an die anderen beiden mithelfer! :cheers: so jetzt steht wenigstensen schonmal der größte teil des Programms! also danke nochmal wäre da echt nicht weitergekommen. gruß Jority :-D |
Re: txt-file einlesen und bearbeiten
Hat sich erledigt.
:duck: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 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