![]() |
Delphi-Version: 5
Filterung eines Namens aus einer Textdatei
Hi Leute, der Blonde ist zurück.:?
Ich habe eine externe Txtdatei wo Name; Vorname; Geb. von verschiedenen Personen untereinander stehen. Durch eingabe des Namens in ein Editfeld und klicken auf ein Button soll die Personen mit dem Namen in eine Listbox eingefügt werden. Bis jetzt habe ich nur den Ansatz. und zemirbe mir den Kopf wie ich das mit Pos in verbindung bekomme. procedure TForm1.btnsuchenClick (Sender: TObject); VAR F:textfile; i,zeilen,laenge:integer; s:string: begin; laenge:=length (s); assignfile(F,'C:\tmp\Krankenhaus\Namen.txt'); {$I-} reaset(F); {$I+} if IOResult <> 0 then exit; while not eof (F) do begin readln (F,s) ; lbxpatienten.items.add(s); end; closefile(f); Was habe ich falsch gemacht? oder kann ich ausführen um den gewünschten Effekt zu haben? Lg Neko |
AW: Filterung eines Namens aus einer Textdatei
Grüß dich,
vorab eine Info: schau dir doch mal die [delphi]-bb-Tags an ;) Damit schaut es einfach schöner aus und ist lesbar.
Delphi-Quellcode:
procedure TForm1.btnsuchenClick (Sender: TObject);
var F:textfile; i,zeilen,laenge:integer; s:string; //: <- Der : sollte ein ; sein. needle: String; tmpStr : String; begin//; <- hier gehört ; weg laenge:=length (s); assignfile(F,'C:\tmp\Krankenhaus\Namen.txt'); {$I-} Reset(f); //reaset(F); <- Hier hast einen Schreibfehler! {$I+} if IOResult <> 0 then exit; // Sicher, dass du hier Exit nutzen willst? // Somit reagierst du evtl. nicht auf Fehler! try // Sicherheitshalber sollte hier ein try-finally-Block stehen // Suchtext von Edit einlesen needle := editSearch.Text; // Evtl. noch Lowercase setzen, sodass CaseInsensitive-Vergleich // gemacht werden kann if (not cbCaseSensitive.Checked) then needle := LowerCase(needle); while not eof (F) do begin readln (F, s); if (not cbCaseSensitive.Checked) then tmpStr := LowerCase(s) else tmpStr := s; if (Pos(needle, tmpStr) > 0) then lbxpatienten.items.add(s); end; finally closefile(f); end; end; |
AW: Filterung eines Namens aus einer Textdatei
Du hast also bereits die Zeilen eingelesen!?
Dann benutze ![]() ![]() ![]() und bitte setze Delphi Tags für den Code! |
AW: Filterung eines Namens aus einer Textdatei
Schau dir mal TStringList an!
TStringlist ist einfacher im Handling. Speichern/Lesen. Ist auch einfacher beim Suchen wenn man zb den delimiter benutzt. Nur so als Vorschlag! Gruss alfold |
AW: Filterung eines Namens aus einer Textdatei
Also nochmal zum Mitdenken.
In Deiner Datei befinden Sich "Patientendaten" mit folgender Struktur:
Code:
Dann solltest du zunächst einmal die zusammenhängenden Daten auch zusammen führen.
Patient1.Name
Patient1.Vorname Patient1.Gebäude Patient2.Name Patient2.Vorname Patient2.Gebäude .... Patientn.Name Patientn.Vorname Patientn.Gebäude Ob in einem String oder einem Record ist zunächst einmal egal. Für die weitere Verarbeiung eines Strings bietet sich eine TStringlist eigentlich an, da man sie auch sehr einfach sortieren kann. Für ein paar Hundert/Tausen Datensätze würde ich aber zur Recordvariante(TList) tendieren, da dann alles über Feldnamen und nicht mehr über Trenner und ihre Positionen definiert ist. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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