AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Fortschrittanzeige bei idhttp upload
Thema durchsuchen
Ansicht
Themen-Optionen

Fortschrittanzeige bei idhttp upload

Ein Thema von Kpa · begonnen am 27. Okt 2006 · letzter Beitrag vom 31. Okt 2006
Antwort Antwort
Kpa

Registriert seit: 25. Okt 2006
7 Beiträge
 
#1

Fortschrittanzeige bei idhttp upload

  Alt 27. Okt 2006, 13:39
Hallo!
ich hab mich jetzt so nach und nach an mien uploadtool rangewurstelt und es funktioniert auch soweit!
jetzt hab ich aber ein weiteres problem und zwar: wie funktioniert das mit der fortschrittsanzeige?
kann mir der jemand einen tip geben?

ich hab mal das ganze projekt angehängt, ist vielleicht das einfachste!
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, idmultipartformdata, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, Psock, NMHttp, IdAntiFreezeBase,
  IdAntiFreeze, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    Memo1: TMemo;
    Button2: TButton;
    ListBox1: TListBox;
    OpenDialog1: TOpenDialog;
    NMHTTP1: TNMHTTP;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Button3: TButton;
    IdAntiFreeze1: TIdAntiFreeze;
    GroupBox3: TGroupBox;
    ProgressBar1: TProgressBar;
    StatusBar1: TStatusBar;
    PopupMenu1: TPopupMenu;
    Deletefilefromlist1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Deletefilefromlist1Click(Sender: TObject);
    procedure Idhttp1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);
    procedure Idhttp1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
  private

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TIdMultiPartFormDataStream;
  StringStream: TStringStream;

begin
Stream := TIdMultiPartFormDataStream.Create;
StringStream := TStringStream.Create('');
try
  Stream.AddFile('file',listbox1.Items[0], 'multipart/form-data');
  IdHTTP1.Post('http://filecoastcom.h1072562.serverkompetenz.net/submit.php', Stream, StringStream);
  Memo1.Text := StringStream.DataString;

finally
  Stream.Free;
  StringStream.Free;
end;
end;

// ########## Statusbalken ############ //
procedure TForm1.Idhttp1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin
  ProgressBar1.Max := AWorkCountMax;
  ProgressBar1.Position := 0;
end;
procedure TForm1.Idhttp1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
  STime: TDateTime;
  AverageSpeed: Double;
begin
Application.ProcessMessages;
  //Errechnen der Transfergeschwindigkeit:
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
  if DLTime > 0 then
    AverageSpeed := (AWorkCount / 1024) / DLTime;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
       wmWrite :StatusBar1.Panels[1].Text := 'Uploade speed ' + S;
  end;

  //Aktualisieren der Fortschrittsanzeige:
  ProgressBar1.Position := AWorkCount;
  Form1.ProgressBar1.Refresh;
end;
// ########## ENDE ############ //



procedure TForm1.Button2Click(Sender: TObject);
var
 anzahl_listbox: integer;
begin
  opendialog1.Execute;
  anzahl_listbox := listbox1.Items.Count;
  listbox1.Items[anzahl_listbox] := opendialog1.FileName;

  anzahl_listbox := listbox1.Items.Count;
  NMHTTP1.Get('http://www.filecoast.com/uploadtool/uploadtool_serverwahl.php');


end;

procedure TForm1.Button3Click(Sender: TObject);
begin
listbox1.DeleteSelected;
end;

procedure TForm1.Deletefilefromlist1Click(Sender: TObject);
begin
 listbox1.DeleteSelected;
end;

end.

DANKE für eure hilfe!
Angehängte Dateien
Dateityp: rar uploadtool_143.rar (244,5 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Fortschrittanzeige bei idhttp upload

  Alt 27. Okt 2006, 13:48
schau mal hier:
http://www.delphipraxis.net/internal...=563250#563250
den Beitrag hab ich in letzter Zeit ein paar mal verlinkt, es sollten also auch noch einige andere Beiträge zu dem Thema zu finden sein.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Kpa

Registriert seit: 25. Okt 2006
7 Beiträge
 
#3

Re: Fortschrittanzeige bei idhttp upload

  Alt 27. Okt 2006, 15:42
ok! nur leider ist deine klasse da etwas viel input auf einmal für mich

wie binde ich die klasse denn ein? eine zweite unit erstellen und an die erste ranhängen hab ich gemacht. und dann auch die in deinen code eingefügt zwischen "implementation" und "end."

was muss ich nun noch an meinem code ändern damit es funktioniert

dickes danke an dich aber schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Fortschrittanzeige bei idhttp upload

  Alt 27. Okt 2006, 16:07
für deinen Fall müsstest du meine Klasse von TStringStream ableiten. Und anstelle des TStringStream dann eben diese Klasse verwenden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Kpa

Registriert seit: 25. Okt 2006
7 Beiträge
 
#5

Re: Fortschrittanzeige bei idhttp upload

  Alt 27. Okt 2006, 16:39
habe in meiner unit1 "stringstream" durch dein "TfilestreamEx" ersetzt.
jetzt bekomme ich aber schon gleich bei deinem code hier die meldung:

TStreamTransferEvnt = procedure(Sender: TStream; AMethodRes: LongInt) of Object;
undeclared identifier: TStream


was heisst das?
oh man delphi ist glaub ich soviel komplizierter als php.
  Mit Zitat antworten Zitat
Kpa

Registriert seit: 25. Okt 2006
7 Beiträge
 
#6

Re: Fortschrittanzeige bei idhttp upload

  Alt 30. Okt 2006, 20:13
ok habs jetzt irgendwie hingekriegt...

nun hab ich ein neues problem:
Die seite auf der die datei hochgeladen wird gibt mir danach den downloadlink aus. allerdings kriege ich den kompletten html code mitgesendet.
wie ist es möglich das der string so beschnitten wird das am ende nur der downloadlink übrigbleibt?

beispiel:
aus
Delphi-Quellcode:
<html>
[...]



[url="http://www.filecoast.com"][img]http://www.filecoast.com/artwork/filecoast.gif[/img]</img>[/url]   



Downloadlink:

[url='http://www.filecoast.com?pg=file&c1=2324465428&c2=CrRPtE5N']Click here to go to the download site.[/url]
wird:
Downloadlink: [url]http://www.filecoast.com?pg=file&c1=2324465428&c2=CrRPtE5N[/url] bei php könnt ich da wohl einiges mit explode hinkriegen, aber sowas hab ich bei delphi noch nicht entdeckt.

vielen dank für eure hilfe!
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

Re: Fortschrittanzeige bei idhttp upload

  Alt 30. Okt 2006, 21:00
Geht mit den String-Funktionen von Delphi...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Fortschrittanzeige bei idhttp upload

  Alt 30. Okt 2006, 21:21
bitte mach für das StringProblem einen neuen Thead
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Kpa

Registriert seit: 25. Okt 2006
7 Beiträge
 
#9

Re: Fortschrittanzeige bei idhttp upload

  Alt 31. Okt 2006, 10:52
naja nun klappts! danke euch allen!


hab nun ein weiteres problem, aber das mach ich dann auch in dieses topic da es direkt etwas mit dem upload der datei zu tun hat.

und zwar: wie breche ich den upload richtig ab?

ich habe einen "stop" button und wenn man darauf klickt wird
idhttp1.DisconnectSocket;
ausgeführt.
das ganze bricht dann auch mit der meldung "connection lost gracefully" ab. nur leider wird der teil der bereits übertragenden daten dennoch vom script verarbeitet.
wie kann ich das so abbrechen das nur komplette dateien an das script übertragen werden?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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