![]() |
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:
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".
Get('Mhl.exe', 'D:\Sonstiges\Mhl.exe', true, true);
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? |
Re: Exe Datei von FTP herunterladen = Broken ???
Ist der Transfermodus binary?
|
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 ? |
Re: Exe Datei von FTP herunterladen = Broken ???
Welche Komponente verwendest du den?
|
Re: Exe Datei von FTP herunterladen = Broken ???
TidFTP von Indy 10 per ftp:=TidFtp.Create;
|
Re: Exe Datei von FTP herunterladen = Broken ???
Delphi-Quellcode:
.TransferType := ftBinary;
|
Re: Exe Datei von FTP herunterladen = Broken ???
Delphi-Quellcode:
genau so gehts ja eben nicht =(
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; 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. |
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. |
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 ;) |
Re: Exe Datei von FTP herunterladen = Broken ???
Füge IdFTPCommon in die Uses ein
|
Re: Exe Datei von FTP herunterladen = Broken ???
Zitat:
und wie bekomm ich die heruntergeladene Datei gleich gestartet?
Delphi-Quellcode:
tuts leider nicht .
ShellExecute(Application.Handle, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, nil, SW_SHOWNORMAL);
|
Re: Exe Datei von FTP herunterladen = Broken ???
Kommt ein Fehler?
|
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.
|
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);
|
Re: Exe Datei von FTP herunterladen = Broken ???
da sagt er mir "Incompatible Typen HWND und Pointer"
|
Re: Exe Datei von FTP herunterladen = Broken ???
Dann nimm 0
|
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?? |
Re: Exe Datei von FTP herunterladen = Broken ???
Ja, den Get wartet ja nicht. Du kannst den Code aber beim entsprechenden Event ausführen
|
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. |
Re: Exe Datei von FTP herunterladen = Broken ???
Einfach im onAfterGet
|
Re: Exe Datei von FTP herunterladen = Broken ???
Delphi-Quellcode:
wenn das so geht dann kommt aber Incompatible Typen TObject und Cardinal.
onAfterGet(ShellExecute(Nil, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, PChar('D:\Sonstiges\'), SW_SHOWNORMAL));
|
Re: Exe Datei von FTP herunterladen = Broken ???
OnAfterGet ist ein Eventbehandlungsroutine:
Erweitere TfrmMain umd die Methode
Delphi-Quellcode:
Weise diese der EventProperty zu
procedure AfterGet(ASender: TObject; AStream: TStream);
Delphi-Quellcode:
in ihr rufe dann die Datei auf
ftp.onAfterGet := AfterGet;
Delphi-Quellcode:
procedure TfrmMain.AfterGet(ASender: TObject; AStream: TStream)
begin ShellExecute(Application.Handle, 'open', PChar('D:\Sonstiges\Mhl.exe'), nil, nil, SW_SHOWNORMAL); end; |
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? |
Re: Exe Datei von FTP herunterladen = Broken ???
Setzte mal einen Breakpoint in die Methode
|
Re: Exe Datei von FTP herunterladen = Broken ???
Was sagt der Rückgabewert von Shellexecute?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz