Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Teile von Textdateien in Listbox darstellen & aktualisieren (https://www.delphipraxis.net/30177-teile-von-textdateien-listbox-darstellen-aktualisieren.html)

buyden 21. Sep 2004 17:22


Teile von Textdateien in Listbox darstellen & aktualisie
 
Hi,

Ich weiß, Textdateien und Stringzerlegung war schon Thema vieler Threads aber irgendwie hat mich bis jetzt noch keiner weitergebracht also bitte nicht gleich beschimpfen :lol:

Ich möchte aus bestimmten Zeilen einer Textdatei einen Teil auslesen und ihn in einer Listbox darstellen. Die Textdatei wird aber zur Laufzeit verändert.

Beispiel:
Ein Techniker hat ein Ersatzteil verbaut und möchte das Teil im Lager ausbuchen lassen.
Dazu schreibt er an das Ende einer Textdatei einen String, bestehend aus Technikernummer; Ersatzteilnummer; leere Stelle;Wochentag; .

Der Techniker soll eine Liste haben, in der nur seine Teile aufgelistet sind.

Im lager besteht ein kleines Programm, das diese Textdatei in einer Liste darstellt. Der Lagermeister bucht das Teil aus und fügt in der Datei an die leere Stelle ein OK ein. Beim Techniker wird daraufhin der betreffende Eintrag aus der Liste gelöscht.

So sollte das ganze laufen.
Ich habe mir gedacht, ich realisiere das Ganze über einen Timer, der in gewissen Abständen die Listbox aktualisiert.
Mein Problem besteht jetzt darin: wie bekomme ich die entsprechenden Strings aus der Datei heraus und wie bemerkt das Programm, wenn das Teil ausgebucht wird.

Ich hoffe ihr versteht, wie ich mir das vorstelle :stupid:

maxk 21. Sep 2004 19:02

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Ich habe dich jetzt nicht soo verstanden, daher poste ich einfach mal ein paar Ideen:
Delphi-Quellcode:
var Strs:TStrings;
begin
 Strs:=TStringList.Create;
 try
  LoadFromFile('Lager.txt');

  Listbox1.Clear;
  Listbox1.Add(Strs[1]); // Zeile 2 hinzufügen
  Listbox1.Add(Strs[0]); // Zeile 1 hinzufügen
  Listbox1.Add(Strs[5]); // Zeile 6 hinzufügen
 finally
  Strs.Free;
 end;
end;
Aber ich glaube, ich habe dich da irgendwie falsch verstanden :lol:

buyden 21. Sep 2004 20:13

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Hi maxk

also ich hab mir das so gedacht: :nerd:

wenn in der Textdatei in irgendeiner Zeile die Technikernummer 100 drinsteht, dann gib mir aus dieser Zeile die Teilenummer und trage sie in meine Listbox ein.

Und zum aktualisieren:

wenn in der Zeile mit Technikernummer 100 "OK" steht, dann lösche die Nummer wieder aus der Listbox.

So sollte die Logik aussehen, es hapert aber leider an der Umsetzung;

City Light 21. Sep 2004 21:02

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Hallo buyden


Was genau brauchst du jetzt für deine Anwendung?

Ein Beispiel für das suchen in einer Textdatei nach einen String?

dann kuck dir mal Klasse TStringList doch etwas genauer an (deineStringliste.IndexOf)

buyden 22. Sep 2004 15:43

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Also ich als Laie würde denken das ich die Zeilen mit ner Schleife durchgehe, die Zeile auslese und mir mit POS(Technikernummer,zeile) suchen lasse, ob die gewünschte Technikernummer in der Zeile steht aber nicht "OK".
Jetzt müsste ich dem Computer irgendwie zu verstehen geben, dass er mir doch den String von dem ";" nach der T-nummer bis zum nächsten ";" geben und in die Liste eintragen soll.
Das stellt meiner Meinung nach das größte Problem für mich dar. :gruebel:

buyden 23. Sep 2004 16:49

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Ach so,
ich hab noch einen kleinen Nachtrag zur Erhöhung des Schwierigkeitsgrades:

die Ersatzteilnummer kann unterschiedlich viele Stellen haben also kann ich die nicht mit copy(x,y) auslesen - denk ich :cyclops: .

Irgendwelche Ideen?? :stupid:

City Light 23. Sep 2004 17:03

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Hallo

na dann schreib doch mal einen kleinen Auszug aus der textdatei, damit man das sich auch bildlich vorstellen kann...ob sie alle untereinander sind oder nicht u. so weiter. Markiere auch gleich die bereiche die du ausgelesen haben möchtest...

MFG
:hi:

buyden 23. Sep 2004 19:35

Re: Teile von Textdateien in Listbox darstellen & aktual
 
So ist die Datei aufgebaut:


143,SR604397,OK, 1
111,SR604572,OK, 1
109,SR604580,OK, 1
123,IMPU002188,OK, 1
108,SR604563,OK, 1
113,SR604397,OK, 1
100,IM002188,, 1
143,SR604563,, 1

Der Techniker 143 hat die Teile SR604397 und SR604563 verbaut. Ersteres wurde vom Lager schon ausgebucht, erkennbar an dem "OK".
In der Listbox soll jetzt also nur die SR604563 auftauchen. Sobald diese ausgebucht wird - also "OK" in der Zeile steht soll die Nummer aus der Liste gelöscht werden.

City Light 23. Sep 2004 21:47

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Also ich bin erstmal bis hier... :wall: nur bringt dich das ja auch leider noch nicht weiter. Weil diese Routine nur die nummer des Technicker aus liest.Auch die wo OK mit bei ist...ich wert aber dran bleiben bis ich was neues hab. Vielleicht gibt es ja einen hier im Forum der das schon mal gemacht hat?

Delphi-Quellcode:
var
  a: integer;
  sl,gefunden: TStringlist;
begin
  sl := TStringlist.Create;
  sl.LoadFromFile('C:\Test.Txt');
  gefunden := TStringlist.Create;
  try
  for a := 0 to sl.count - 1 do
    begin
      if pos('143', sl.Strings[a]) <> 0 then  //Der Techniker 143
      gefunden.Add(sl.Strings[a]);
       Form1.Listbox1.Items.Text := gefunden.Text;
     end;
  finally
    sl.Free;
    gefunden.free;
 end;
MFG
:hi:

maxk 24. Sep 2004 14:18

Re: Teile von Textdateien in Listbox darstellen & aktual
 
Vielleicht so?
Delphi-Quellcode:
var Line,Artikel:string;
    i:integer;
begin
with TStringList.Create do try
  LoadFromFile('C:\Lager.txt');
  Listbox1.Clear;
  for i:=0 to Count-1 do begin
   Line:=Strings[i];                  // 143,SR604563,, 1
   System.Delete(Line,1,pos(',',Line));// SR604563,, 1
   Artikel:=copy(Line,1,pos(',',Line)-1);
   System.Delete(Line,1,pos(',',Line));// , 1
   if not AnsiSameText(copy(Line,1,2),'OK') then ListBox1.Items.Add(Artikel);
  end;
finally
  Free;
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Seite 1 von 2  1 2      

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