Autor Beitrag
Xearox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mi 17.03.10 16:00 
Also, folgendes Problem:

Ich habe einem Freund, für sein Programm, einen Updater via FTP geschrieben.
Er hat dies in sein Programm integriert, nun war das Problem, das beim Start des Programms, Delphi hängen geblieben ist,
wieso auch immer, bei mir lief der Updater einwandfrei.

So, nun ist das so, das nachdem er Delphi geschlossen hatte(Delphi ist komplett abgeschissen), das all seine Sourcen, die er verwendet hat, gelöscht wurden.

Es handelt sich um Delphi 7 PE

Ich habe den Updater in D2010 geschrieben.



Kann hier wer helfen?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 17.03.10 16:58 
Delphi selbst löscht da sicher nichts das hat er dann schon selbst gemacht. Entweder durch ein Programm von ihm ganz manuell oder er hat einen Virus (bei D7 gibts mittlerweile einige die aber auf gut eingerichteten PCs kaum etwas machen konnten).
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 17.03.10 19:24 
Vielleicht waren die Dateien einfach nicht geschlossen und Windows hat sie beim Festplattencheck gelöscht?
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mi 17.03.10 20:58 
nichts der gleichen

er hat das Programm gestartet, programm ist hängen gebliebn, also D7 komplett.
Er hat es per TaskManager geschlossen

Alle Sorcen waren daraufhin weg
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 17.03.10 21:01 
Dann würde ich auch eher user profile iconjaenickes These unterstützen. Oder aber die Dateien sind "noch da" und existieren nur nicht mehr in der Tabelle.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.03.10 22:33 
Wie soll ein abgestürztes Programm Dateien löschen können?
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mi 17.03.10 22:34 
weiß ich nicht, er sagte mir, nach dem er mein code implementiert hat, ist delphi hängen geblieben, und danach wären die sourcen weg gewesen
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 17.03.10 23:22 
Ist jetzt ein wenig die Frage, wie der Updater arbeitet..
Werden hier irdenwelche Dateien gelöscht, oder "nur" überschrieben? Kann man die Dateien auswählen, oder wie läuft das? Solche Sachen..

Ansonsten kann ich das auch nicht ganz glauben, dass durch ein abgestürztes Delphi alle Dateien weg sein sollen.
Vielleicht mal chkdsk drüber laufen lassen?

_________________
PROGRAMMER: A device for converting coffee into software.
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Do 18.03.10 01:04 
also, sagen wir mal so, der updater ist nicht gerade, was man nem Profi, der richtig Programmieren kann, erwarten kann...
Ich lediglich jemand, der Delphi gerade erst lernt.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
unit update;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdExplicitTLSClientServerBase, IdFTP, StdCtrls;

type
  TMainForm = class(TForm)
    IdFTP1: TIdFTP;
    procedure Updater;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;

implementation



{$R *.dfm}



procedure TForm2.Updater;
begin
  showMessage('Bitte Einen Moment, Update wird jeden moment gestartet, bitte OK drücken, Programm wird automatisch geschlossen');
  IdFTP1.Username := ('') ; //den username für den server
  IdFTP1.Password := (''); //das Passwort für den Server
  IdFTP1.Host := ('') ; //die IP deines FTP Server eintragen
  IdFTP1.Connect;
  IdFTP1.ChangeDir('');
  try
    IdFTP1.Get(' ', (ExtractFilePath(ParamStr(0)) + ' '), true); //den namen deines programms eintragen
  except
    showMessage('Update Fehlgeschlagen');
  end;
  showMessage('Update Erfolgreich');
  IdFTP1.Quit;
  close;
  winexec(ExtractFilePath(ParamStr(0)) +'.\Project1.exe', SW_SHOWNORMAL); //hier ebenfalls den namen eintragen

end;



end.



Das war der Grund code.
Er hat beim Update Button nun eingefügt:

ausblenden Delphi-Quelltext
1:
2:
3:
begin
  form1.close;
  Updater;



bedeutet, damit die Project1.exe überschrieben werden kann, muss diese exe erstmal geschlossen werden, also Form1.close
und dann wird die Projekt1.exe überschrieben, und dann neu geöffnet.

so und nun beim starten ist Delphi komplett abgeschissen
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 18.03.10 01:52 
Mal ganz doof gefragt: Das Programm beendet sich selbst. Das beendete Programm, das nun nicht mehr läuft, ruft den Updater auf, der die nicht mehr laufende Exe ersetzt. Anschließend wird das Programm wieder gestartet. Kommt das nur mir komisch vor oder ist das wirklich unlogisch (falsch^^)?!?

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
chickenfigt1989
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: Do 18.03.10 04:56 
Es müsste doch erst den Update aufrufen und dann die Exe schließen oder?
Das ist so, wie mit dem Beispiel das hier mal gebracht wurde mit dem Motor.
Man schaltet auch nicht dem Motor aus und gibt dann Gas.
Gruß
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.03.10 07:07 
user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Das Programm beendet sich selbst. Das beendete Programm, das nun nicht mehr läuft, ruft den Updater auf, der die nicht mehr laufende Exe ersetzt. Anschließend wird das Programm wieder gestartet. Kommt das nur mir komisch vor oder ist das wirklich unlogisch (falsch^^)?!?
Es funktioniert auch schlicht nicht. Ich habe das zwar nicht noch extra ausprobiert, aber was passieren sollte ist, dass Indy einfach gar nix macht.
Denn durch das Close wird das Programm ja nicht direkt geschlossen, sondern erst sobald der aktuelle Code abgearbeitet ist. In diesem Fall der des "Updaters". Das heißt der "Updater" startet im Grunde nur die eigene Exe neu, mehr nicht. ;-)

Machen kann man das aber grundsätzlich schon so, wenn man die Exe vorher umbenennt und nach dem Neustart löscht. :idea:
So arbeitet auch mein Updater.

WinExec ist allerdings so ziemlich die schlechteste Idee, die man dafür haben kann... Der Befehl ist 20 Jahre alt und nur noch für Windows 3.1 Abwärtskompatibilität vorhanden. Dafür gibt es ShellExecute.
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: So 21.03.10 06:23 
Ich weiß ja nicht wie das bei euch ist, aber wenn ich close; mache und Winexec oder ShellExecute, wie auch immer, aufrufe, wird das programm dennoch gestartet.
Als ich mir Platzwart antwort hab ich auch gedacht, hmm, irgendwas stimmt ja da nicht, aber dennoch macht ers bei mir.

Obwohl dies auch für mich eher Unlogisch erscheint, das ein geschlossenes Programm ein anderes aufrufen kann.
Aber es ist so.

darauf hin wird die Datei per FTP vom server Downgeloadet, und die exe automatisch überschrieben, danach wird die exe erneut aufgerufen.
Aber was ich glaube ist, dass das Problem wohl eher daran liegt, das man aus Delphi heraus auf Projekt Starten geklickt hat, und darauf hin die eigenliche exe, also was man in Delphi Compiliert und gestartet hat, beendet wird, und eine andere exe aufgerufen wird.

Vermutlich hat sich deswegen Delphi aufgehangen, das er das nicht so gemocht hat.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 21.03.10 10:39 
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
Ich weiß ja nicht wie das bei euch ist, aber wenn ich close; mache und Winexec oder ShellExecute, wie auch immer, aufrufe, wird das programm dennoch gestartet.
Als ich mir Platzwart antwort hab ich auch gedacht, hmm, irgendwas stimmt ja da nicht, aber dennoch macht ers bei mir.
Ich habe es doch schon erklärt:
Close schließt nicht sofort, sondern erst, wenn dein Quelltext abgearbeitet ist, in dem dieser Befehl steht. Und wenn danach dein Updatercode kommt, dann wird auch dieser inkl. Start des Programms ausgeführt bevor das Programm geschlossen wird.
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: So 21.03.10 13:02 
naja, ist jetzt eh geklärt...ihm werd ich ganz sicher nicht mehr helfen.

Im Anhang befindet sich ein ganz toller Text, von maier1990 bzw. chickenfighter1989 usw.

Moderiert von user profile iconChristian S.: Screenshot von privatem Chat entfernt
chickenfigt1989
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 444
Erhaltene Danke: 2



BeitragVerfasst: So 21.03.10 13:26 
Dan is es ja gut du kleena Freak :)
Von früh Morgens bis Spät Abends online :)
Wie wärs mal mit nen Reallife?
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.