Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeichen aus Textdatei auslesen (https://www.delphipraxis.net/3450-zeichen-aus-textdatei-auslesen.html)

Hellcat 13. Mär 2003 16:11


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

sakura 13. Mär 2003 16:28

Wie wäre es mit Pos(SearchStr, Zeile) als Lösungsansatz?

...:cat:...

Hellcat 13. Mär 2003 17:10

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.

CalganX 13. Mär 2003 17:35

Hi,
wenn ich dich richtig verstehe, dann ist das, was du meinst, folgendes:
Delphi-Quellcode:
var
  aLine: string;
begin
  {...}
  readln(aFile, aLine);
  {...}
end;
Chris

Daniel 13. Mär 2003 17:37

Hallo,
Delphi-Quellcode:
procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);
Du setzt einfach Deine String-Variable als zweiten Parameter hinter die Dateivariable:
Delphi-Quellcode:
ReadLn( myFile, myString );

eddy 13. Mär 2003 17:51

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:
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;
Ich setze dabei voraus, daß begin nur einmal pro Zeile verwendet wird.

mfg
eddy

Hellcat 13. Mär 2003 19:49

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:
writeln (save, TimeToStr(Now)+ '#' + HName + '#' + IntToStr(HFarbe) + '#' + BoolToStr(Schloss) + '#');
doch wenn ich den Wert wieder auslese und versuche einem Objekt diese Farbe zuzuweisen wird das Objekt schwarz...

Delphi-Quellcode:
repeat
    begin
      Fabezaehler := Fabezaehler + Zeile[Zaehler];
      inc (Zaehler);
    end;
  until Zeile[Zaehler] = '#';
  HalFarbe := StrToInt(Fabezaehler);
  inc (Zaehler);
Delphi-Quellcode:
Panel1.Color := HalFarbe;
Beim Speichern wird das "$" abgeschnitten, daher vermute ich mal stark daß es daran liegt, aber wie integriere ich das wieder in meinen Farbwert?

Luckie 13. Mär 2003 19:56

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 16:02 Uhr.

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