AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdHttp zur Laufzeiterzeugen oder ein anderes Prob??
Thema durchsuchen
Ansicht
Themen-Optionen

IdHttp zur Laufzeiterzeugen oder ein anderes Prob??

Ein Thema von bjacke · begonnen am 20. Jan 2005 · letzter Beitrag vom 20. Jan 2005
Antwort Antwort
Benutzerbild von bjacke
bjacke

Registriert seit: 1. Aug 2004
Ort: Berlin
82 Beiträge
 
Delphi 7 Personal
 
#1

IdHttp zur Laufzeiterzeugen oder ein anderes Prob??

  Alt 20. Jan 2005, 13:41
Hallo,
ich habe Mal wieder ein Problem .
Ich will über IdHttp eine Datei aus dem Internet laden. Das hatte auf einem Formular auch super geklppt. Jetzt hab ich es in eine Eytra Unit geschopen und Muss irgendwie die Indy-Komponete zur Laufzeit erzeugen. Ich bekomme aber immer an einer Stelle einen Fehler und bin mir nicht sicher woran das liegt!

Der Spaß beginnt mit der procedure load .

Delphi-Quellcode:
unit update_unit;

interface

uses Windows, SysUtils, Classes, Forms, Controls, StdCtrls,
  Buttons, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP,Dialogs,MSXML2_TLB,ShellApi,IniFiles;


    procedure load ;
    procedure readxml;
    procedure ini;

var
  xmlDoc: IXMLDOMDocument2;
  close_upd :boolean;
  URL,version:string;

implementation
uses unit1;

procedure readxml;
Var ivers,url_xml,force_update:IXMLDOMnode; internet_addr:string;
Begin
  xmlDoc:=CoDomDocument40.Create;

 xmlDoc.setProperty('NewParser',true); //Laden der XML
 xmlDoc.load('http://de.geocities.com/boincobserver/update.xml') ;

   if xmlDoc.parseError.errorCode = 0 then
   Begin
   ivers:= xmldoc.selectSingleNode('BOINC-Observer/files/actual_version/version') ;
   version:= ivers.text;
     if Form1.versnum.Caption=ivers.text then Begin Form1.check_upd.Caption:='no update alivable';close_upd:=true;End
     else
      Begin
      force_update:= xmldoc.selectSingleNode('BOINC-Observer/files/actual_version/force_update') ;
      URL_xml:=xmldoc.selectSingleNode('BOINC-Observer/files/actual_version/force_update_url') ;
      if force_update.text='yesthen URL:=url_xml.text
       else
        Begin
        url_xml:= xmldoc.selectSingleNode('BOINC-Observer/files/actual_version/progam_url') ;
        URL:=url_xml.text;
        End;
    close_upd:=false;
      End;
  End
  else close_upd:=true;

End;

procedure ini;
var Ini: TIniFile;
Begin
  try
    Ini:=TIniFile.Create(ExtractFileDir(Application.ExeName)+'\BOINC-OBSERVER.ini');
    Begin
    Ini.WriteString('update','to version',version);
    Ini.WriteBool('update','to do',true);
    End;
  except
  Ini.Free
  End;
End;


procedure load ;
Var stream:Tstream; file_size:string; IdHttp1:TIdHttp;
Begin

  IdHttp1 := IdHttp1.Create(nil);


Form1.check_upd.Caption:='try to connect'  ;

readxml;
if close_upd=false then
Begin
Form1.check_upd.Caption:='got data' ;
IdHTTP1.Head(URL); <--------------------------------- Die Url ist korrekt (mit ShowMessage überprüft)
  if MessageDlg('Download the files now? ['+IntToStr(round(IdHTTP1.Response.ContentLength /1048576))+' MB]', mtInformation, [mbYes, mbNo], 0)=mrYes then
 Begin
 stream := TFileStream.Create((ExtractFileDir(Application.ExeName)+'\update.zip'), fmCreate);
 Form1.check_upd.Caption:='downloading'  ;
 try
   IdHTTP1.Get(URL, stream);
  except
  on e: exception do
  ShowMessage('Error: ' + e.Message);
 end;
 stream.Free;
 Form1.check_upd.Caption:='updated';
 ini;
     if MessageDlg('Install the new version know or during the next start? (NOTE:BOINC-Observer will be short close!)', mtInformation, [mbYes, mbNo], 0)=mrYes then
       Begin

       Form1.Close;
       End

 End

 else Form1.check_upd.Caption:='aborted' ;

end

 else Form1.check_upd.Caption:='error'  ;



end;

end.
MfG bjacke

Das Ganze ist mehr als die Summe seiner Computerteile.
  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: IdHttp zur Laufzeiterzeugen oder ein anderes Prob??

  Alt 20. Jan 2005, 13:55
und was für einen Fehler bekommst du?

Fehler gefunden:
IdHttp1 := IdHttp1.Create(nil); so wird kein Object erzeugt. Richtig wäre es so
IdHttp1 := TIdHttp.Create(nil); also immer
  Instance := TKlassenname.Constructor;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 08:10 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