![]() |
Datei "seeken"
*Luft holt*
Ich habe eine Textdatei, die untereinander aufgelistet Strings beinhaltet (irgendwelche Benutzernamen eines Netzwerks z.B.). Was muss ich in den Quelltext schreiben damit die Routine nacheinander diese Namen ausliest? Ich will damit so eine Art Zeiger erhalten der vom ANFANG bis zum ENDE dieser Datei geht ("seek") und nach jedem Schritt den jeweils zutreffenden String auslesen kann. Geht das mit ner While Schleife die das EOF beinhaltet? Wenn ja, wie genau sieht das aus? Wenn nein, welche andere Lösung gibts? Dank im Voraus Rapthor |
Es geht, aus meiner Sicht auch einfacher.
Delphi-Quellcode:
...:cat:...
var
I: Integer; SL: TStringList; begin SL := TStringList.Create; try SL.LoadFromFile('C:\Temp\DateiMitZeilen.txt'); for I := 0 to Pred(SL.Count) do ShowMessage(SL[I]); finally SL.Free; end; end; |
Klappt super
Danke, das klappt wirklich gut
ABER wie siehts jetzt aus, wenn ich anstatt einer Textdatei eine Combobox auslesen will? Also alle Einträge nacheinander von oben nach unten durchgehen und ausgeben lassen .... Thx Rapthor |
Hallo,
das geht genauso. for i := 0 to ComboBox.Items.Count -1 do. Schau Dir das in der OH an!!! Da ist es so schön beschrieben! Grüsse, Daniel :hi: |
Es geht nicht ganz ...
was heißt die -1 hinter dem Count? Mein Quelltext lautet folgendermaßen
Code:
Ich erhalte jetzt die Fehlermeldung: List Index out of bounds (0)
begin
SL := TStringList.Create; try for I := 0 to UserListe.Items.Count -1 do ShellExecute(Handle, nil, 'c:\windows\system32\net.exe', PChar('send ' + SL[I] + ' ' + Parameter1.Text), nil, SW_HIDE); finally SL.Free; end; Was mach ich falsch? |
Zitat:
Wenn man jetzt die Schleife von 0 bis Items.Count laufen lässt, dann sind das sieben! durchläufe. Du willst aber nur sech. Also, 0 bis Items.Count minus eins. Also 0 bis 5. Somit hat man 6 durchläufe. Wenn Dir das aber zu blöd ist, dann schreib 1 to Items.Count do, kommt aufs gleiche raus. Was Dir besser gefällt. Das gilt allgemein für Schleifen. Grüsse, Daniel :hi: |
Seltsam
Seltsam seltsam .... warum funzt das nicht? :?
Mal die Frage anders gestellt: Welche Routine ermittelt mir einfach nur das n , das die Anzahl der in der Combobox gespeicherten Einträge (=Zeilen) ausliest? Rapthor |
Hallo,
wenn ich das richtig sehe, läuft Dein Index I bis UserListe.Items.Count -1, mit diesem Index greifst Du aber auf die Liste SL zu. In Deinem Codebeispiel hat SL überhaupt keine Einträge, damit kommst Du automatisch out of bounds. Ich weiß jetzt nicht, was die UserListe genau ist, wenn ich mal annehme, daß die einzelnen Einträge in UserListe.Items stehen, sollte es so gehen: for I := 0 to UserListe.Items.Count -1 do ShellExecute(Handle, nil, 'c:\windows\system32\net.exe', PChar('send ' + UserListe.Items[I] + ' ' + Parameter1.Text), nil, SW_HIDE); Viele Grüße |
Danke für die sehr hilfreiche Antwort ... jetzt klappt alles prima !!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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