Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Einfache Schleife kann ich nicht lösen! :-( (https://www.delphipraxis.net/71846-einfache-schleife-kann-ich-nicht-loesen.html)

la.reunion 21. Jun 2006 19:58


Einfache Schleife kann ich nicht lösen! :-(
 
Hallo,
Hab ne ziehmliche Anfängerfrage.

1. WO genau kann ich schleifen zu erstellen richtig lernen?(Unser Inf-Lehrer hatte uns das nie richtig erklärt! :-( ..Leider)
2. Ich habe eine Listbox und möchte jeden eintrag durchgehen das der für eine Funktion benutzt wird
genauer gesagt soll jeder wert für "HIER" (bei dHTTP1.Get(HIER, fs);)eingetragen werden und nahceinander runtergeladen in C:\Windows\Temp\
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  fn: TFileName;
  fs : TFileStream;
begin
  fn := 'C:\Windows\Temp\';
  fs := TFileStream.Create(fn, fmCreate);
try
   try
      IdHTTP1.Get(HIER, fs);
except
  end;
    finally
    FreeAndNil(fs);                                                      
  end;
end;
end;

Danke für eure Hilfe?!?

3_of_8 21. Jun 2006 20:00

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Erstmal kannst du den try-except Block rauslassen, der ist komplett überflüssig.

Wenn du Schleifen erstellen willst, schau mal in der OH unter Delphi-Referenz durchsuchenfor, Delphi-Referenz durchsuchenwhile, Delphi-Referenz durchsuchenrepeat nach.

EDatabaseError 21. Jun 2006 20:00

Re: Einfache Schleife kann ich nicht lösen! :-(
 
schau mal hier in der Forenhilfe oder in der OH nach:
for, while oder until

Mfg
tobi


//roter kasten :-(

la.reunion 21. Jun 2006 20:02

Re: Einfache Schleife kann ich nicht lösen! :-(
 
danke das geht ja schnell hier :-)

la.reunion 21. Jun 2006 20:12

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Delphi-Quellcode:
For i:= 0 to listbox1.items.count - 1 do
  fn := 'C:\Windows\Temp\allcover\';
  fs := TFileStream.Create(fn, fmCreate);
    IdHTTP1.Get(HIER, fs);
end;
  finally
  FreeAndNil(fs);
end;
Ist die schleife dann so richtig
Was kommt dann bei HIER(muss ja jedes mal ein andres ITEM sein)rein?

Stefan Hueg 21. Jun 2006 20:13

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Schau mal hier.

EDatabaseError 21. Jun 2006 20:15

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Zitat:

Zitat von la.reunion
Delphi-Quellcode:
For i:= 0 to listbox1.items.count - 1 do
  fn := 'C:\Windows\Temp\allcover\';
  fs := TFileStream.Create(fn, fmCreate);
    IdHTTP1.Get(HIER, fs);
end;
  finally
  FreeAndNil(fs);
end;
Ist die schleife dann so richtig
Was kommt dann bei HIER(muss ja jedes mal ein andres ITEM sein)rein?

imho die schleifenvariable also i

la.reunion 21. Jun 2006 20:19

Re: Einfache Schleife kann ich nicht lösen! :-(
 
mhh hab ich probiert, er möchte aber das ich einen string dafür benutze wie kann ich das dann lösen?

... es gibt keine überladenen Verison von "Get" die man mit diese Argumenten.....

EDatabaseError 21. Jun 2006 20:20

Re: Einfache Schleife kann ich nicht lösen! :-(
 
IntToStr(i); ;-)

la.reunion 21. Jun 2006 20:20

Re: Einfache Schleife kann ich nicht lösen! :-(
 
mist hatt ich vergessen *vorkopfhau* :-D danke!

Stefan Hueg 21. Jun 2006 20:21

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Folgendes fiel mir bei deinem Code auf:

Delphi-Quellcode:
  fn := 'C:\Windows\Temp\allcover\';
Pack das vor die Schleife, der Wert verändert sich ja nicht in der Schleife

Delphi-Quellcode:
  fs := TFileStream.Create(fn, fmCreate);
    IdHTTP1.Get(HIER, fs);
Pack das in eine

Delphi-Quellcode:
try
  fs := TFileStream.Create(fn, fmCreate);
    IdHTTP1.Get(HIER, fs);
finally
  fs.Free;
end;
Damit ist sichergestellt, dass die Resource geschützt ist und das Objekt auf jedenfall freigegeben wird.

Gruß,

Stefan

la.reunion 21. Jun 2006 20:25

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Danke es kommt jetzt nur der fehler 404 sprich dateinciht gefundne wenn ich für HIER i nehm

EDatabaseError 21. Jun 2006 20:26

Re: Einfache Schleife kann ich nicht lösen! :-(
 
I hat immer den Wert des schleifendurchlaufs also 1,2,3 usw.

Hawkeye219 21. Jun 2006 20:29

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Zitat:

Zitat von Stefan Hueg
Pack das in eine
Delphi-Quellcode:
try
  fs := TFileStream.Create(fn, fmCreate);
    IdHTTP1.Get(HIER, fs);
finally
  fs.Free;
end;

Stefan, du solltest noch einmal in "deinen" Thread schauen: klick

Gruß Hawkeye

Stefan Hueg 21. Jun 2006 20:33

Re: Einfache Schleife kann ich nicht lösen! :-(
 
@Hawkeye: Mein Fehler, muss natürlich so lauten

Delphi-Quellcode:
  fn := 'C:\Windows\Temp\allcover\';
  For i:= 0 to listbox1.items.count - 1 do begin
    fs := TFileStream.Create(fn, fmCreate);
    try
      IdHTTP1.Get(listbox1.items[i], fs);
    finally
      fs.Free;
    end;
  end;
@la.reunion: Hinter das "For i:= 0 to listbox1.items.count - 1 do" muss dringend ein Begin schließend mit einem End, sonst führt er nur das fs := TFileStream.Create(fn, fmCreate); in einer Schleife aus und macht des Rest ausserhalb.

EDatabaseError 21. Jun 2006 20:34

Re: Einfache Schleife kann ich nicht lösen! :-(
 
:witch: z.b.

la.reunion 21. Jun 2006 20:37

Re: Einfache Schleife kann ich nicht lösen! :-(
 
DANKEE!!!
Delphi-Quellcode:
fn := 'C:\Windows\Temp\'+listbox1.items[i];
mhhh er sagt immer der pfad kann nciht gefunden/erstellt erden!??! was ist da?(auch wenn ich +listbox1.items[i] weglasse)

Christian Seehase 21. Jun 2006 20:41

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Moin la.reunion,

ich habe da mal eine Frage:
Was steht eigentlich in der Listbox?

BTW:
So wie das bisher aussieht wird es aber nicht funktionieren können, da das Erzeugen des FileStreams auf ein Verzeichnis verweist, nicht auf eine Datei.

Stefan Hueg 21. Jun 2006 20:42

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Ist denn überhaupt was in der listbox drin? denn ohne gehts ja nich ;)

la.reunion 21. Jun 2006 20:44

Re: Einfache Schleife kann ich nicht lösen! :-(
 
HAbe mal drein links rein(sind ja die gleichen aber is ja egal)
...waren die ganze zeit shcon drin ...
Delphi-Quellcode:
http://images.amazon.com/images/P/B00006L71B.03._SCLZZZZZZZ_.jpg
[url]http://images.amazon.com/images/P/B00006L71B.03._SCLZZZZZZZ_.jpg[/url]
[url]http://images.amazon.com/images/P/B00006L71B.03._SCLZZZZZZZ_.jpg[/url]
Inzwischen sagt er dann das der Listenindex überschritten wurde!

Danke für eure MÜHE!!!

Stefan Hueg 21. Jun 2006 20:48

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Probiers mal so:

Delphi-Quellcode:
For i:= 0 to listbox1.items.count - 1 do begin
    fn := 'C:\Windows\Temp\allcover\Cover_' + IntToStr(I) + '.jpg';
    fs := TFileStream.Create(fn, fmCreate);
    try
      IdHTTP1.Get(listbox1.items[i], fs);
    finally
      fs.Free;
    end;
  end;

la.reunion 21. Jun 2006 20:51

Re: Einfache Schleife kann ich nicht lösen! :-(
 
So geht es JUHU!!!!!
DANKE VIELMALS!!!

Jetzt muss ich nur mal alle Links aus der XML Datei extrahieren!
um die in die Listbox einzutragen!

Stefan Hueg 21. Jun 2006 20:53

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Freut mich, nun solltest du das

Delphi-Quellcode:
fn := 'C:\Windows\Temp\allcover\Cover_' + IntToStr(I) + '.jpg';
Durch etwas ersetzen das den Dateinamen der zu downloadenden Datei enthält. Ich denke hier im Forum wirst du fündig.

la.reunion 21. Jun 2006 21:00

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Vielen dank! nochmals
ich hbae dann noch ein kleines prob und zwar wenn ich dann in der listbox ein item anklicke soll es in einem image1 angezeigt werden

der code wäre doch dann

nur für einen selektierten eintrag? oder nicht?
For i:= 0 to listbox1.items.count - 1 do begin Listbox1.item[ItemIndex]


mhh ne des falsch

Obi-Wan 22. Jun 2006 11:24

Re: Einfache Schleife kann ich nicht lösen! :-(
 
Du musst einfach in das "OnClick" Ereignis der Listbox das hier schreiben:

Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
 Image1.Picture.LoadFromFile(ListBox1.Items[ListBox1.Itemindex]);
end;
Davon ausgehend das in der Listbox die Pfade zu der jeweiligen Datei stehen.
Wenn du .jpg Bilder anzeigen lassen willst muss du oben in der uses Klausel noch JPEG einbinden. :zwinker:

la.reunion 3. Jul 2006 19:14

Re: Einfache Schleife kann ich nicht lösen! :-(
 
danke!


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