AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Finde Fehler in Programm nicht

Ein Thema von Smaraner · begonnen am 23. Dez 2013 · letzter Beitrag vom 1. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
Smaraner
(Gast)

n/a Beiträge
 
#1

Finde Fehler in Programm nicht

  Alt 23. Dez 2013, 17:33
Hallo,

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

image.png

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: Update.zip

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

Sebastian
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Finde Fehler in Programm nicht

  Alt 23. Dez 2013, 18:04
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
Klaus

Geändert von Klaus01 (23. Dez 2013 um 18:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#3

AW: Finde Fehler in Programm nicht

  Alt 23. Dez 2013, 18:14
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 FTP:= TidFTP.Create; , auch wenn ich das mangels Kenntnis der Klasse nicht mit Bestimmtheit sagen kann.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

AW: Finde Fehler in Programm nicht

  Alt 23. Dez 2013, 20:23
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 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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Dez 2013 um 20:45 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Finde Fehler in Programm nicht

  Alt 23. Dez 2013, 20:37
Im FormCreate fehlt das Befehl := TStringList.Create; und natürlich auch das 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]='dirthen CreateDir(Befehl[1]);
   if Befehl[0]='delthen DeleteFileDir(Befehl[1]);
   if Befehl[0]='getthen
   begin
    Inc(FileCount);
    FTP.Size(Befehl[1]);
    FTP.Get(Befehl[1],Befehl[2],true);
    pbGesamt.Position:=pbGesamt.Position+1;
   end;
 end;
  Mit Zitat antworten Zitat
Smaraner
(Gast)

n/a Beiträge
 
#6

AW: Finde Fehler in Programm nicht

  Alt 24. Dez 2013, 08:43
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.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#7

AW: Finde Fehler in Programm nicht

  Alt 24. Dez 2013, 12:48
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#8

AW: Finde Fehler in Programm nicht

  Alt 24. Dez 2013, 12:52
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.

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.
In FormCreate steht aber sehr viel "böser" Code ... Sicher, daß die update.txt nicht von dort ist?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Smaraner
(Gast)

n/a Beiträge
 
#9

AW: Finde Fehler in Programm nicht

  Alt 1. Jan 2014, 10:14
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.
  Mit Zitat antworten Zitat
Smaraner
(Gast)

n/a Beiträge
 
#10

AW: Finde Fehler in Programm nicht

  Alt 1. Jan 2014, 18:14
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:

unbenannt.png
  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 21: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