![]() |
Zeichen aus Textdatei auslesen
Hi Leute!
Ich bin mal wieder zu vernagelt um ein Problem zu lösen...es geht um folgendes: Ich will aus einer Textdatei eine Zeile auslesen (das geht mit ReadLn), muß dann aber diese Textzeile noch nach einem bestimmten Zeichen durchsuchen. Wie macht man das? Schon mal vielen Dank im Voraus! Hellcat |
Wie wäre es mit Pos(SearchStr, Zeile) als Lösungsansatz?
...:cat:... |
Ok, eine dumme Frage kommt ja bekanntlich beim Programmieren selten alleine: Wie muß ich denn dann hinten den String angeben, da ich ja nur die Zeilennummer kenne, aber nicht den String? Oder anders ausgedrückt: wie kriege ich das Ergebnis von ReadLn in einen String gepackt?
Danke @Eddy: Die Zeilennummer kriege ich natürlich nicht über readLn sondern habe ich über eine gesonderte Funktion ermittelt. |
Hi,
wenn ich dich richtig verstehe, dann ist das, was du meinst, folgendes:
Delphi-Quellcode:
Chris
var
aLine: string; begin {...} readln(aFile, aLine); {...} end; |
Hallo,
Delphi-Quellcode:
Du setzt einfach Deine String-Variable als zweiten Parameter hinter die Dateivariable:
procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);
Delphi-Quellcode:
ReadLn( myFile, myString );
|
Hallo Hellcat,
das ist keine dumme Frage, das ist Kauderwelsch. Readln liefert, soweit ich weiß, keine Zeilen-Nummer sondern einen String. Würde ich in einer Textdatei nach einem bestimmten String suchen, sähe das bei mir so aus oder so ähnlich:
Code:
Ich setze dabei voraus, daß begin nur einmal pro Zeile verwendet wird.
procedure TFInfoFinder.sbTestClick(Sender: TObject);
const fn = 'C:\tmp\InfoFinder1.PAS'; srch = 'begin'; var f : TextFile; cnt : integer; s : string; begin {$I-} AssignFile(f, fn); Reset(f); if IOResult <> 0 then begin MessageDlg('War wohl nicht''s', mtConfirmation, [mbOK],0); exit; end; cnt := 0; while not Eof(f) do begin Readln(f, s); s := AnsiLowerCase(s); if Pos(srch, s) > 0 then inc(cnt); end; MessageDlg('In ' + AnsiUpperCase(fn) + ' wurde die Zeichenkette: ' + #13 + '"' + srch + '" ' + IntToStr(cnt) + ' Mal gefunden', mtInformation, [mbOK], 0); CloseFile(f); {$I+} end; mfg eddy |
Hi Leute,
Danke für die schnelle Hilfe - jetzt stellt sich mir in dem zusammenhang ein anderes Problem: Ich speichere zunächst einen Farbwert (Hexadezimal) in einer Textdatei
Delphi-Quellcode:
doch wenn ich den Wert wieder auslese und versuche einem Objekt diese Farbe zuzuweisen wird das Objekt schwarz...
writeln (save, TimeToStr(Now)+ '#' + HName + '#' + IntToStr(HFarbe) + '#' + BoolToStr(Schloss) + '#');
Delphi-Quellcode:
repeat
begin Fabezaehler := Fabezaehler + Zeile[Zaehler]; inc (Zaehler); end; until Zeile[Zaehler] = '#'; HalFarbe := StrToInt(Fabezaehler); inc (Zaehler);
Delphi-Quellcode:
Beim Speichern wird das "$" abgeschnitten, daher vermute ich mal stark daß es daran liegt, aber wie integriere ich das wieder in meinen Farbwert?
Panel1.Color := HalFarbe;
|
Neues Problem, neuer Thread bitte, sonst geht es hier durcheinander und es wird außerdem schwieriger etwas mit der suche wiederzufinden. Ich mache hier mal dicht und würde dich bitten einen neuen Thread aufzumachen. Danke für dein Verständnis.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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