Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Datei "seeken" (https://www.delphipraxis.net/3277-datei-seeken.html)

Rapthor 4. Mär 2003 17:12


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

sakura 4. Mär 2003 17:16

Es geht, aus meiner Sicht auch einfacher.
Delphi-Quellcode:
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;
...:cat:...

Rapthor 4. Mär 2003 18:28

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

Daniel B 4. Mär 2003 18:48

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:

Rapthor 4. Mär 2003 20:24

Es geht nicht ganz ...
was heißt die -1 hinter dem Count?
Mein Quelltext lautet folgendermaßen

Code:
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;
Ich erhalte jetzt die Fehlermeldung: List Index out of bounds (0)

Was mach ich falsch?

Daniel B 4. Mär 2003 20:35

Zitat:

Zitat von Rapthor
Es geht nicht ganz ...
was heißt die -1 hinter dem Count?

Beispiel, Deine CB hat 6 Einträge, dann ist der Items.Count = 6.
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:

Rapthor 5. Mär 2003 07:12

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

Delphianer 5. Mär 2003 08:32

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

Rapthor 5. Mär 2003 20:26

Danke für die sehr hilfreiche Antwort ... jetzt klappt alles prima !!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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