AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Probleme bei Download auf delphilosen Pc
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei Download auf delphilosen Pc

Ein Thema von Jeff93 · begonnen am 28. Jul 2008 · letzter Beitrag vom 28. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#1

Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 12:47
Hallo,

habe eine Problem mit meinem kleinen Installationsprogramm, das die Dateien von meiner Homepage in einen Ordner kopieren soll. Dies klappt auch soweit, nur nicht auf meinem Pc. Mein Pc hat kein Delphi noch die dafür nötigen Installationen. Der Pc hat Windows Xp SP2.

Habe dies schon im Tutorial gepostet, ging leider in den Beiträgen unter und entschloss mich es in eingenen Thread zu stellen

Ist es vlt. ein Problem mit der uses UrlMo
Delphi-Quellcode:
const
  HELPURL = 'http://meinehomepage.de/help.ini';
Delphi-Quellcode:
procedure Tfrm_InstallVocTrainer.bbtn_installClick(Sender: TObject);
var
  Ziel, UFile : String;
  Ini : TIniFile;
  loop, i : Integer;

  function ExtractUrlFileName(Url:String) : String;
  var SPos : Integer;
  begin
    SPos := Pos('/', Url);
    if SPos <> 0 then
    begin
      Result := ExtractUrlFileName(Copy(Url, SPos+1, Length(Url)-1));
    end
    else
    begin
      Result := Url;
    end;
  end;

begin
  if ed_InstallDir.Text='then
    ed_InstallDir.Text := GetProgDir; //Gibt Ordner der Programme zurueck (C:\Programme\)
  Try
    Ziel := ed_InstallDir.Text+'VokabelTrainer\';
    UrlDownloadToFile(nil, HELPURL, PChar(Ziel+ExtractUrlFileName(HELPURL)), 0, nil);
  Except
    ShowMessage('Fehler bei Download');
  End;
  Ini := TIniFile.Create(Ziel+ExtractUrlFileName(HELPURL));
  Try
    Try
      i := Ini.ReadInteger('D-Files','FCount', 0);
      Memo1.Clear;
      Memo1.Lines.Add('Download gestartet'); //Diese beiden sind als einzige im Memo sichtbar
      Memo1.Lines.Add(''); //Diese auch, bin ratlos
      for loop := 1 to i do
      begin
        UFile := Ini.ReadString('D-Files', 'File'+IntToStr(loop), '');
        UrlDownloadToFile(nil, Pchar(UFile), PChar(Ziel+ExtractUrlFileName(UFile)), 0, nil);
        Memo1.Lines.Add(UFile+' nach:');
        Memo1.Lines.Add(Ziel+ExtractUrlFileName(UFile)+' gedownloadet');
      end;
    Except
      ShowMessage('Download fehlgeschlagen!');
    End;
  Finally
    Ini.Free;
  End;
end;
Die Ini sieht so aus
Code:
[D-Files]
FCOUNT=5
File1=http://meinehomepage.de/Options.ini
File2=http://meinehomepage.de/VocabularyTeacher.exe
File3=http://meinehomepage.de/s_neutral.bmp
File4=http://meinehomepage.de/s_right.bmp
File5=http://meinehomepage.de/s_wrong.bmp
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 12:51
Wo liegt denn die ini

wenn die beim Programm liegt fehlen vieleicht entsprechende Rechte. XP und Vista ist da etwas pingelich.

Inis sollten immer im Userverzeichnis/Anwendungsdaten abgelegt werden

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 13:38
Ich hatte vor die help.ini in das Programmverzeichnis abzulegen (C:\Programme\VokabelTrainer\help.ini). Admin rechte besitze ich.

Edit: Auch wenn ich einen Ordner am Desktop auswähle funzt es nicht, doch dann müsste doch eine Exeption auftreten??
  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: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 14:06
du schreibst das du ein Problem hast. Wo liegt das genau bzw. wie äußert es sich? Kommt eine Fehlermeldung? Wann ja welche? Wenn nicht, was passiert was hätte nicht passieren sollen?
Gibt dir URLDownloadToFile nichts zurück? Anhand des Namens würde ich vermuten das dir da ein Status zurück gegeben wird ob es geklappt hat oder nicht wenn nicht sogar direkt den Fehler.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 14:18
Das Problem äussert sich indem man im Memo sieht:
Code:
Download gestartet
Keine Exception auftritt und der Ordner leer bleibt, der Button wird aber wieder "losgelassen" und das Formular kann noch betätigt werden, schreibe momentan den Code um und versuche raise eine exception auszulösen wenn URlDownloadToFile nicht S_Ok zurückgibt (MSDN)
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 15:12
das sieht dann so aus als wenn deine for-schleife nicht ein einziges mal durchläuft.
lass dir mal den wert von i ausgeben. der wird sicher <= 0 sein.
  Mit Zitat antworten Zitat
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 16:47
i ist 5^^

habe hier mal einen neuen Code geschrieben, doch mein Programm läuft unsauber, die Form verwackelt und mein alter Pc geht dabei fast drauf, wo kann ich noch ein paar Code-Schnipsel zur Optimierung einbauen?

Delphi-Quellcode:
procedure Tfrm_InstallVocTrainer.bbtn_installClick(Sender: TObject);
var
  Target, UrlFile, Path : String;

  //Name eines Datei im Url-Pfad ausgeben
  function ExtractUrlFileName(Url:String) : String;
  var SPos : Integer;
  begin
    SPos := Pos('/', Url);
    if SPos <> 0 then
    begin
      Result := ExtractUrlFileName(Copy(Url, SPos+1, Length(Url)-1));
    end
    else
    begin
      Result := Url;
    end;
  end;

  //Fehlgeschlagener Download -> Exception auslösen
  function DownloadFile(AFrom, ATo : String) : Boolean;
  var
    Answer : Boolean;
  begin
    Result := True;
    Try
      UrlDownloadToFile(nil, Pchar(AFrom), PChar(ATo), 0, nil);
      Answer := FileExists(ATo);
      if not Answer then raise EDownloadError.Create('Der Download konnte nicht beendet werden');
    Except
      on E : EDownloadError do ShowMessage('Download fehlgeschlagen:'+#13#10+
                                           AFrom+' nach'+#13#10+ATo)
      else ShowMessage('Download fehlgeschlagen:'+#1310+AFrom+' nach'+#13#10+ATo);
      Result := False;
    End;
    Application.ProcessMessages;
  end;

procedure ReadIniFile(HelpIni : String);
  var
    Ini : TIniFile;
    loop, i : Integer;
    Answer : Boolean;
  begin
    Ini := TIniFile.Create(HelpIni);
    Try
      Memo1.Lines.Add('Download gestartet');
      Memo1.Lines.Add('');
      i := Ini.ReadInteger('D-Files','FCount', 0); //Wieviele Dateien
      for loop := 1 to i do
      begin
        UrlFile := Ini.ReadString('D-Files', 'File'+IntToStr(loop), '');
        Answer := DownloadFile(UrlFile, Path + ExtractUrlFileName(UrlFile));
        if Answer then
        begin
          Memo1.Lines.Add('Download erfolgreich');
        end
        else
        begin
          Memo1.Lines.Add('Download von '+UrlFile+' fehlgeschlagen');
        end;
      end;
    Finally
      Ini.Free;
    End;
  end;

begin
  Memo1.Clear;
  //leeres Edit abfangen
  if ed_InstallDir.Text= 'then
    ed_InstallDir.Text := GetProgDir;


  Path := IncludeTrailingBackslash(ed_InstallDir.Text)+'VokabelTrainer\';
  ForceDirectories(Path);
  if DownloadFile(HELPURL, Path+ExtractUrlFileName(HELPURL)) then
  begin
    Memo1.Lines.Add('Hilfsdatei heruntergeladen');
    ReadIniFile(Path+ExtractUrlFileName(HELPURl));
  end;
end;
Mfg, Jeff

Edit: Ich glaube das Problem war vorher dass der Ordner nicht angelegt war dies habe ich mit FoceDirectory behoben.
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#8

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 16:58
URLDownloadToFile(..) blockt nunma deine anwendung solange es läuft/downloaded.
wenn du das verhindern willst würde ich n eigenen thread für die aufgabe erstellen.
der läuft/downloaded, aber deine anwendung reagiert noch normal.
  Mit Zitat antworten Zitat
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 17:10
Ok danke für deine Infos! Soll ich ein TThread Objekt benutzen oder CreateThread ??
Und noch eine Frage wie könnte ich einfach und schnell den Download per Button abbrechen?

Kann jemand bitte die Exe testen und posten ob es übertrieben lange dauert?

Ps: Hab's nochmal auf meinem altem Pc (der arme) probiert ist wieder fast zusammengebrochen
Angehängte Dateien
Dateityp: zip installer_505.zip (257,7 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Probleme bei Download auf delphilosen Pc

  Alt 28. Jul 2008, 17:15
Die CodeLib hilft
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:21 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