Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Finde Fehler in Programm nicht (https://www.delphipraxis.net/178210-finde-fehler-programm-nicht.html)

Smaraner 23. Dez 2013 17:33

Finde Fehler in Programm nicht
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

ich habe heute dieses Tutorial gemacht: http://www.youtube.com/watch?v=bBBH1MT89dg. Ich erhalte jetzt nach dem Start folgende Fehlermeldung:

Anhang 40415

Danach öffnet sich das Programmfenster. Wenn man jetzt auf Updaten klickt, erscheint noch eine Meldung: "Verbindung besteht bereits" Das Kennwort und der Benutzername für den Server stimmen, da er die Datei update.txt herunterlädt. Hier der Link für das Programm: Anhang 40416

Vielleicht sieht ja jemand meinen Fehler und ich war einfach nur zu dumm und habe ihn übersehen. :wall:

Sebastian

Klaus01 23. Dez 2013 18:04

AW: Finde Fehler in Programm nicht
 
Guten Abend,

versuche mal aus connect ein ftp.connect zu machen.
Delphi-Quellcode:
procedure TFormMain.FormCreate(Sender: TObject);
var Update, Befehl, BefehlText:TStringList;
i:Integer;
begin
 FTP.Connect; // <---

 Update:=TStringList.Create;

 CreateDir('tmp');
 FTP.Get('updates.txt','tmp\updates.txt',true);
 Update.LoadFromFile('version.txt');
 VersionAk:=Update[0];
 Update.Clear;
 Update.LoadFromFile('tmp\updates.txt');
und dann auch in der Methode update.

connect ist hier die methode von TForm und nicht von tidFtp daher scheint der Aufruf connect in Ordnung zu sein.

Warum rufst Du die Methode update nicht im form.create auf?
Don't repeat yourself (DRY)

Grüße
Klaus

Dalai 23. Dez 2013 18:14

AW: Finde Fehler in Programm nicht
 
Zitat:

Zitat von Klaus01 (Beitrag 1240886)
connect ist hier die methode von TForm und nicht von tidFtp daher scheint der Aufruf connect in Ordnung zu sein.

Nö, du lagst schon richtig:
Delphi-Quellcode:
type
  TFormMain = class(TForm)
    FTP: TIdFTP;
Zumal danach in der Methode auch FTP.Get() ausgeführt wird.
Ich denke, da fehlt sogar ein
Delphi-Quellcode:
FTP:= TidFTP.Create;
, auch wenn ich das mangels Kenntnis der Klasse nicht mit Bestimmtheit sagen kann.

MfG Dalai

himitsu 23. Dez 2013 20:23

AW: Finde Fehler in Programm nicht
 
Connect ist richtig.

Die FTP-Komponenten wird über die DFM erstellt.

Dann gibt es eine Variable Update in der Methode Update.
Und eine nicht verwendete Variable Befehle.

Was mir erstmal auffällt, sind die "bösen" relativen Pfade.
Viele "böse" globale Variablen.
Vergleiche auf True
Delphi-Quellcode:
if UpdatingActive=True then
.

#10#13 ? Verwende sLineBreak oder zumindestens das Richtige #13#10 (Windows CR+LF).




Entweder du debuggst das Programm mal und schaust wo es knallt oder du baust dir ein Logging ein, was die letzte funktionierende Stelle zeigt, oder halt eine Menge ShowMessages.

Zitat:

...r den Server stimmen, da er die Datei update.txt herunterlädt
Bis zum FTP.Get ist es also noch gekommen.
Wurden die Versions-Labels aktualisiert? (ist er also noch bis zum Vergleich gekommen)




Warum macht die Funktion Update eigentlich nichts?
Außer die Versionen zu laden, zu Vergleichen und den InstallButton zumzufärben?

In FormCreate steht aber sehr viel "böser" Code ... Sicher, daß die update.txt nicht von dort ist?

nahpets 23. Dez 2013 20:37

AW: Finde Fehler in Programm nicht
 
Im FormCreate fehlt das
Delphi-Quellcode:
Befehl := TStringList.Create;
und natürlich auch das
Delphi-Quellcode:
Befehl.Free
.
Daher scheitert dieser Teil:
Delphi-Quellcode:
 for i := 1 to Update.Count - 1 do
 begin
   Befehl.Clear; <--- hier müsste die Schutzverletzung auftreten!!!
   ExtractStrings([';'],[],PChar(Update[i]),Befehl);

   //Befehl auswerten
   if Befehl[0]='dir' then CreateDir(Befehl[1]);
   if Befehl[0]='del' then DeleteFileDir(Befehl[1]);
   if Befehl[0]='get' then
   begin
    Inc(FileCount);
    FTP.Size(Befehl[1]);
    FTP.Get(Befehl[1],Befehl[2],true);
    pbGesamt.Position:=pbGesamt.Position+1;
   end;
 end;

Smaraner 24. Dez 2013 08:43

AW: Finde Fehler in Programm nicht
 
Anscheinend hat
Code:
Befehl := TStringList.Create;
und
Code:
Befehl.Free;
gefehlt, denn hetzt Funktioniert es richtig. Leide beginnt das Update jetzt sofort beim Programmstart und nicht erst, wenn der Button gedrückt wird. Kann man das noch ändern?

Sonst schon einmal vielen Dank für die Hilfe und noch schöne Weihnachten.

Dalai 24. Dez 2013 12:48

AW: Finde Fehler in Programm nicht
 
Zitat:

Zitat von Smaraner (Beitrag 1240910)
Leide beginnt das Update jetzt sofort beim Programmstart und nicht erst, wenn der Button gedrückt wird. Kann man das noch ändern?

Öhm, das Programm macht genau das, was du ihm gesagt hast. Wann wird denn FormCreate ausgeführt?

MfG Dalai

himitsu 24. Dez 2013 12:52

AW: Finde Fehler in Programm nicht
 
Zitat:

Zitat von Smaraner (Beitrag 1240910)
Anscheinend hat
Code:
Befehl := TStringList.Create;
und
Code:
Befehl.Free;
gefehlt, denn hetzt Funktioniert es richtig.

Dann solltest du dringend mal das lesen und beachten, was der Compiler dir sagt, denn ich wette daß er dir etwas vonwegen "Variable 'Befehl' ist nicht initialisiert" gensagt.

Zitat:

Zitat von Smaraner (Beitrag 1240910)
Leide beginnt das Update jetzt sofort beim Programmstart und nicht erst, wenn der Button gedrückt wird. Kann man das noch ändern?

Wieso "Leider"?
Du hast das genau so programmiert.
Zitat:

Zitat von himitsu (Beitrag 1240892)
In FormCreate steht aber sehr viel "böser" Code ... Sicher, daß die update.txt nicht von dort ist?


Smaraner 1. Jan 2014 10:14

AW: Finde Fehler in Programm nicht
 
Danke für eure Hilfe, jetzt funktioniert es. Ich hatte den Code für das herunterladen der Dateien schon im OnCreate. Dann führt er das natürlich sofort aus.

Smaraner 1. Jan 2014 18:14

AW: Finde Fehler in Programm nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe jetzt ein neues Problem. TXT Dateien lädt er problemlos herunter und man kann diese danach noch öffnen. Bei Bildern oder .exe Dateien kommt folgende Meldung:

Anhang 40453


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
Seite 1 von 2  1 2      

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