![]() |
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: |
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:
Aber ich glaube, ich habe dich da irgendwie falsch verstanden :lol:
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; |
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; |
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) |
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: |
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: |
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: |
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. |
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:
MFG
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; :hi: |
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. |
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