hejsan. Vilken version har du? Använder du D7 så följer Indy komponenterna antagligen med. Tror även det följer med diverse demo applikationer. Annars kan du hämta exempel, komponenter m.m från deras sida. ok tack. Vet inte vad du använder för komponent / klass eftersom du inte angivit det. frågan är bara hur man använder dom. Här är ett exempel som jag klippte ur ett webrelaterat verktyg jag byggde en gång i den glada IT-bubblan :)delphi med internet
behöver någon länk där det står hur man arbetar med delphi på internet.
typ ladda ned filer, ta hem text från en hemsida osv.
skulle hjälpa mig otroligt mycketSv: delphi med internet
i vissa delphi versioner ingår Internet komponenter.Sv: delphi med internet
http://www.indyproject.org/
Du kan även använda komponenterna från TP det följer med exempel och en manual i pdf-format.
TurboPower Internet Professional
http://sourceforge.net/projects/tpipro
Ett annat alternativ Internet Component Suite:
http://overbyte.delphicenter.com/eng/products/ics.htmlSv: delphi med internet
har iallafall fått lite hjälp med det.
använder kommandot "DownloadFile".
Så att tanka hem funkar.
Nu skulle jag behöva avbryta nedladdningen. (men filen ska kunna användas),
Vi lyckades strypa nedladdningshastigheten till 0, eller hur man nu ska kunna förklara det.
Men programmet ligger ju forfarande på denna fil som tankas.
Jag vill kunna öppna filen med programmet efter nedladdning.
Men då står det att filen används. Pga att programmet ligger och tankar i 0kb/sec till den.
Går det att helt enkelt bara avbryta nedladdningen istället för att sänka hastigheten?Sv: delphi med internet
Kan ej heller dra mig till minnes metoden DownloadFile men om du använder Indy komponeterna (ex IdTCP, eller IdHTTP) som kommer med Delphi så kan du använda DissconnectSocket eller Disconnect.Sv: delphi med internet
koppla upp sig och tanka fil m.m.
kan inget sådant alls.
fattar inget utav det som står i helpmanualen som följer med delphi 7 heller.Sv: delphi med internet
<code>
procedure TfrmMain.RetrieveImage(Obj : TObject);
var
data : String;
imageData : TMemoryStream;
begin
Screen.Cursor := crHourGlass;
try
if (not FileExists(CACHE_DIR + IntToStr(TDataPack(Obj).EntryId) +'.jpg')) then
begin
Image1.Picture.LoadFromFile(AppDir() + 'working.jpg');
Refresh;
imageData := TMemoryStream.Create();
IdHTTP1.Get(TDataPack(Obj).ImageUrl ,imageData);
if (imageData.Size = 0) then Abort;
imageData.SaveToFile(CACHE_DIR +IntToStr(TDataPack(Obj).EntryId)+'.jpg');
if FAutoDeleteBad then
if IsBadImage(imageData) then
begin
AutoRefuse(TDataPack(Obj));
UpdateControls();
Abort;
end;
end;
Image1.Picture.LoadFromFile(CACHE_DIR +IntToStr(TDataPack(Obj).EntryId)+'.jpg');
Panel2.Caption := Format('Size : (%d x %d)',[Image1.Picture.Width,Image1.Picture.Height]);
finally
imageData.Free;
Screen.Cursor := crDefault;
end;
end;
</code>
Det intrassanta bitarna är :
1. Skapa en stream. I detta fallet en MemoryStream. Den kommer vi att använda för att lagra den hämtade datan (om det bara är text du är ute efter finns en verion av Get som returnerar en sträng och då behövs inte något stream objekt)
2. Anropa Get-Metoden på ditt IndyHTTP object (IdHTTP1 i detta fallet) och skicka med URLen och Streamen som parametrar.
Om allt gott bra så bör du nu ha din data i din stream och kan till exempel spara den med SaveToFile eller något liknande.
Hoppas det klarnar lite och bry dig inte alltför mycket om alla konstanter och tjafs i koden... de viktiga raderna är
<code>
imageData := TMemoryStream.Create();
IdHTTP1.Get('http://server/bilder/minbild.jpg' ,imageData);
imageData.SaveToFile('minbild.jpg');
imageData.Free;
</code>
Happy coding...
/H