AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Filterung eines Namens aus einer Textdatei

Ein Thema von neko77 · begonnen am 14. Mär 2011 · letzter Beitrag vom 14. Mär 2011
Antwort Antwort
neko77

Registriert seit: 7. Mär 2011
Ort: Dresden
6 Beiträge
 
#1

Filterung eines Namens aus einer Textdatei

  Alt 14. Mär 2011, 14:28
Delphi-Version: 5
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
Martin
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Filterung eines Namens aus einer Textdatei

  Alt 14. Mär 2011, 14:39
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;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Filterung eines Namens aus einer Textdatei

  Alt 14. Mär 2011, 14:42
Du hast also bereits die Zeilen eingelesen!?
Dann benutze Hier im Forum suchenPosEx, um die verschiedenen, scheinbar durch ";" getrennten Teile zu trennen, oder du suchst mal nach Hier im Forum suchenExplode, oder nach Hier im Forum suchenTStringList.DelimitedText

und bitte setze Delphi Tags für den Code!
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Filterung eines Namens aus einer Textdatei

  Alt 14. Mär 2011, 14:44
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Filterung eines Namens aus einer Textdatei

  Alt 14. Mär 2011, 15:34
Also nochmal zum Mitdenken.
In Deiner Datei befinden Sich "Patientendaten" mit folgender Struktur:
Code:
Patient1.Name
Patient1.Vorname
Patient1.Gebäude
Patient2.Name
Patient2.Vorname
Patient2.Gebäude
....
Patientn.Name
Patientn.Vorname
Patientn.Gebäude
Dann solltest du zunächst einmal die zusammenhängenden Daten auch zusammen führen.
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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