Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Exe Datei von FTP herunterladen = Broken ??? (https://www.delphipraxis.net/123467-exe-datei-von-ftp-herunterladen-%3D-broken.html)

MaToBe 2. Nov 2008 18:11


Exe Datei von FTP herunterladen = Broken ???
 
Guten Tag,

ich bins mal wieder ;)

Also ich habe per Filezilla eine Datei (Mhl.exe) auf meinen Webspace geladen.

Nun möchte ich sie mittels

Delphi-Quellcode:
Get('Mhl.exe', 'D:\Sonstiges\Mhl.exe', true, true);
wieder herunterladen. Die FTP Verbindung steht, dass runterladen klappt ja auch, nur leider kommt wenn ich die .Exe dann öffnen will die Fehlermeldung "Das Programm ist keine gültige Win32 Anwendung".

Diese Fehlermeldung verstehe ich nicht aus 3 Gründen:

1. Vor dem Uploaden auf FTP ging die Datei ohne jedes Problem => Datei ist in Ordnung
2. Lade ich sie mit Filezilla statt mit meinem ftp.Get Befehl herunter, funktioniert sie auch => Webspace macht sie nicht kaputt.
3. Ini-Dateien kommen komplett und richtig an. => FTP-Verbindung in meinem Programm steht.

Das heißt der Get Befehl muss irgendwo einen Fehler haben oder? Aber wo?

mkinzler 2. Nov 2008 18:20

Re: Exe Datei von FTP herunterladen = Broken ???
 
Ist der Transfermodus binary?

MaToBe 2. Nov 2008 18:52

Re: Exe Datei von FTP herunterladen = Broken ???
 
mmh keine Ahnung.

wo kann man das einstelln bzw. herausfinden?

€: habs gefunden, aber wie stellt man das von Axcii auf Binary um?

mit TransferType := ftBinary; gehts nicht und mit TransferType(ftBinary) auch nicht ?

mkinzler 2. Nov 2008 18:53

Re: Exe Datei von FTP herunterladen = Broken ???
 
Welche Komponente verwendest du den?

MaToBe 2. Nov 2008 18:58

Re: Exe Datei von FTP herunterladen = Broken ???
 
TidFTP von Indy 10 per ftp:=TidFtp.Create;

mkinzler 2. Nov 2008 19:02

Re: Exe Datei von FTP herunterladen = Broken ???
 
Delphi-Quellcode:
.TransferType := ftBinary;

MaToBe 2. Nov 2008 19:10

Re: Exe Datei von FTP herunterladen = Broken ???
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, inifiles, Grids, XPMan, StdCtrls, jpeg, ExtCtrls, ShellApi, ComCtrls,
  ShellCtrls, URLMon, Menus, IdFtp, Registry, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase;

type
...

  private
    ftp: TidFtp;
  public
    { Public-Deklarationen }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}



procedure TfrmMain.FormCreate(Sender: TObject);
var i: integer;
begin
      ftp:=TidFtp.Create;
      with ftp do begin
        Host := '***';
        Username := '***';
        Password := '***';
        Passive := true;
        Connect;
        if FileExists('D:\Sonstiges\Mhl.exe') = false then
        begin
          TransferType := ftBinary;
          Get('Mhl.exe', 'D:\Sonstiges\Mhl.exe', true, true);
        end;
        Disconnect;
        ftp.Free;
      end;
    end;
end;
genau so gehts ja eben nicht =(

was ich vielleciht dazu sagen muss, was mich selbst wundern...

ich verwende ja theoretisch die Komponente TidFTP, allerdings habe ich gar keine solche Komponente auf meinem Form.
Ich habe einfach oben bei Uses idFTP hingeschrieben und dann eben diesesn Code und alles funktioniert wunderbar.
Liegt es vielleicht daran, dass ich die TidFTP erst in einer Prozedur erstelle? Oder hab ich hier einen Grundlegenden Denkfehler, wenn ja klärt mich bitte auf denn ich arbeite das erste mal mit den Indys.

MaToBe 2. Nov 2008 19:46

Re: Exe Datei von FTP herunterladen = Broken ???
 
Als Fehlermeldung erhallte ich "R2003: Ungültiger Bezeichner : 'ftBinary'"

Hat den keiner ne Idee? Host ect. sind ja auch keine Ungültigen Bezeichner.

jfheins 2. Nov 2008 19:50

Re: Exe Datei von FTP herunterladen = Broken ???
 
Dann drück mal Strg und klicke dann auf TransferType.

Offensichtlich wird der Transfertype nicht mit der Konstante ftBinary beschrieben.

Alternativ in der Hilfe gucken, oder Strg + Leertaste drücken ;)

mkinzler 2. Nov 2008 19:52

Re: Exe Datei von FTP herunterladen = Broken ???
 
Füge IdFTPCommon in die Uses ein

MaToBe 2. Nov 2008 20:06

Re: Exe Datei von FTP herunterladen = Broken ???
 
Zitat:

Zitat von mkinzler
Füge IdFTPCommon in die Uses ein

Das wars danke, auf was man alles achten muss.

und wie bekomm ich die heruntergeladene Datei gleich gestartet?

Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, nil, SW_SHOWNORMAL);
tuts leider nicht .

mkinzler 2. Nov 2008 20:08

Re: Exe Datei von FTP herunterladen = Broken ???
 
Kommt ein Fehler?

MaToBe 2. Nov 2008 20:10

Re: Exe Datei von FTP herunterladen = Broken ???
 
nein es startet nur einfach nicht. das runterladen klappt jetzt super auch ins richtige verzeichnis und das manuelle starten per doppelklick geht auch aber mit dem Code eben nicht.

mkinzler 2. Nov 2008 20:13

Re: Exe Datei von FTP herunterladen = Broken ???
 
Versuch mal
Delphi-Quellcode:
ShellExecute(Nil, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, PChar('D:\Sonstiges\'), SW_SHOWNORMAL);

MaToBe 2. Nov 2008 20:16

Re: Exe Datei von FTP herunterladen = Broken ???
 
da sagt er mir "Incompatible Typen HWND und Pointer"

mkinzler 2. Nov 2008 20:18

Re: Exe Datei von FTP herunterladen = Broken ???
 
Dann nimm 0

MaToBe 2. Nov 2008 20:20

Re: Exe Datei von FTP herunterladen = Broken ???
 
dann gibt es keinen Fehler aber er tut wieder nichts.

Kann es sein das das Programm versucht, die Exe zu öffnen bevor sie heruntergeladen ist??

mkinzler 2. Nov 2008 20:22

Re: Exe Datei von FTP herunterladen = Broken ???
 
Ja, den Get wartet ja nicht. Du kannst den Code aber beim entsprechenden Event ausführen

MaToBe 2. Nov 2008 20:23

Re: Exe Datei von FTP herunterladen = Broken ???
 
mmh okay habs kannst du mir das vielleicht erklären wie das geht?

Event also wenn Get fertig ist dann ausführn? wie geht das?

Sorry für die Anfängerfragen.

mkinzler 2. Nov 2008 20:24

Re: Exe Datei von FTP herunterladen = Broken ???
 
Einfach im onAfterGet

MaToBe 2. Nov 2008 20:30

Re: Exe Datei von FTP herunterladen = Broken ???
 
Delphi-Quellcode:
onAfterGet(ShellExecute(Nil, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, PChar('D:\Sonstiges\'), SW_SHOWNORMAL));
wenn das so geht dann kommt aber Incompatible Typen TObject und Cardinal.

mkinzler 2. Nov 2008 20:39

Re: Exe Datei von FTP herunterladen = Broken ???
 
OnAfterGet ist ein Eventbehandlungsroutine:
Erweitere TfrmMain umd die Methode
Delphi-Quellcode:
procedure AfterGet(ASender: TObject; AStream: TStream);
Weise diese der EventProperty zu
Delphi-Quellcode:
ftp.onAfterGet := AfterGet;
in ihr rufe dann die Datei auf
Delphi-Quellcode:
procedure TfrmMain.AfterGet(ASender: TObject; AStream: TStream)
begin
    ShellExecute(Application.Handle, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, nil, SW_SHOWNORMAL);
end;

MaToBe 2. Nov 2008 20:49

Re: Exe Datei von FTP herunterladen = Broken ???
 
klappt leider immmer noch nicht. es gibt keine fehlermeldung oder ähnliches, aber das Programm wird nicht gestartet. Manuell kann ich es starten.

Hat vllt noch jemand eine Idee?

mkinzler 2. Nov 2008 20:50

Re: Exe Datei von FTP herunterladen = Broken ???
 
Setzte mal einen Breakpoint in die Methode

Luckie 2. Nov 2008 21:00

Re: Exe Datei von FTP herunterladen = Broken ???
 
Was sagt der Rückgabewert von Shellexecute?


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