AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Application.Mainform / Code wird ignoriert
Thema durchsuchen
Ansicht
Themen-Optionen

Application.Mainform / Code wird ignoriert

Ein Thema von ReVenGer · begonnen am 9. Dez 2013 · letzter Beitrag vom 10. Dez 2013
Antwort Antwort
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#1

Application.Mainform / Code wird ignoriert

  Alt 9. Dez 2013, 16:47
Hi zusammen,

ich habe folgendes Problem.

In meinem Mainform (Form1) prüfe ich bei OnCreate mittels Dateigrößenvergleich (Lokal/Web) ob ein Update für mein Programm vorhanden ist.

Code:
 
if FindFirst('Tool.exe', faAnyFile, Search) = 0 then
    System.SysUtils.FindClose(Search);

  if Search.Size <> GetRemoteFilesize
    ('http://schnabbeldidu.de/update.exe') then

    if Application.MessageBox('New Update Found!' + #13 +
      'Start Update now? Otherwise this Program will Terminate!',
      'Updater', MB_ICONWARNING or MB_YESNO) = IDNO then
      Application.terminate;

Sollte dem so sein, öffne ich mit folgendem code die Form3 wo sich meine Progresbar und der code zum downloaden befindet und setze ShowMainform:=False;

Code:
Form3 := Tform3.Create(nil);
  Form3.show;
Application.ShowMainForm := False;
Soweit funktioniert alles.
Aber, wenn ich jetzt meine Anwendung nach dem Download der Datei komplett schließen möchte, ignoriert er mein Application.Terminate aus der Form3 heraus.
Auch ein Showmainform:=True; wird ignoriert, ich weiß nicht warum?!


Welche Möglichkeiten habe ich um meine Programm von dort aus zu beenden?


Vielen Dank im Voraus!

Geändert von ReVenGer ( 9. Dez 2013 um 16:51 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Application.Mainform / Code wird ignoriert

  Alt 9. Dez 2013, 17:26
Das ist mMn nach eine ungünstige Stelle - mitten im Constructor einer Form schon ein Application.Terminate aufrufen zu wollen.

Warum nicht in die .dpr bevor Application überhaupt angefasst wird?
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#3

AW: Application.Mainform / Code wird ignoriert

  Alt 9. Dez 2013, 18:33
Du meinst die Updateroutine (Prüfung auf Update und Verweis auf Form3) vor dem Application.CreateForm(TForm1, Form1) aufrufen?

Das macht natürlich Sinn. Wird geändert!

Löst aber nach wie vor mein Callback Problem nicht

Geändert von ReVenGer ( 9. Dez 2013 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Application.Mainform / Code wird ignoriert

  Alt 9. Dez 2013, 19:02
Delphi-Quellcode:
 
if FindFirst('Tool.exe', faAnyFile, Search) = 0 then
    System.SysUtils.FindClose(Search);

  if Search.Size <> GetRemoteFilesize
    ('http://schnabbeldidu.de/update.exe') then

    if Application.MessageBox('New Update Found!' + #13 +
      'Start Update now? Otherwise this Program will Terminate!',
      'Updater', MB_ICONWARNING or MB_YESNO) = IDNO then
      Application.terminate;
Laut der Codeformatierung fehlt da wohl mindestens ein Begin-End, bei if FindFirst( ?


Und was heißt "Code wird ignoriert"?
- Wird der code wirklich ignoriert und nicht in die EXE eingebaut? (beim debuggen keine blauen Pünktchen links neben den Zeilen)
- Oder wird dein Code nur nicht ausgeführt, weil ein IF nein sagt?


Application.Terminate sollte dennoch ausfegührt werden.
Nja, wenn du den Code vor CreateForm legst und CreateForm(Form1) und Application.Run garnicht erst ausfühst, wenn geupdatet wird, dann sollte sich das Problem von Selber lösen.



Relative Pfade ... nja, wenn es daran lieg, daß eventuell FindFirst nichts findet, dann bistz du selber dran Schuld.



PS: Delphi-Referenz durchsuchenFileExists und neuerdings (XE+) auch Delphi-Referenz durchsuchenTFile.Exists
[edit] Oh, es gab noch garkeine GetFileSize-Funktion? (mit war so, als gab's da mal was) Und TFile.GetSize fehlt auch.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Dez 2013 um 19:10 Uhr)
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#5

AW: Application.Mainform / Code wird ignoriert

  Alt 9. Dez 2013, 19:38
Kann ich denn in der dpr ganz normal die indy komponenten enbinden?

Oder muss ich da was beachten?

Vielelicht denke ich da gerade auch in die falsche Richtung, aber wenn ich den code ausführe bevor Application.CreateForm(TForm3, Form3) aufgerufen wird, fehlt mir ja die Progressbar, bzw die vcl Komponenten.

Zitat:
Laut der Codeformatierung fehlt da wohl mindestens ein Begin-End, bei if FindFirst( ?
Jupp, da fehlt auch die GetRemoteFilesize function.

Zitat:
Relative Pfade ... nja, wenn es daran lieg, daß eventuell FindFirst nichts findet, dann bistz du selber dran Schuld.
Muss er finden, das ist ja da Programm was das Autoupdate ausführt.

Edit:
Beim debuggen sehe ich das Application.Terminate, aber er führt es nach dem Update nicht aus.

Edit2:

Wie starte ich denn explizit die form3 nach einem Application.Create(Form3). So das ich die Mainform (Form1) gar nicht ausführen muss?

Geändert von ReVenGer ( 9. Dez 2013 um 20:44 Uhr)
  Mit Zitat antworten Zitat
ReVenGer

Registriert seit: 11. Okt 2005
Ort: Hannover
50 Beiträge
 
Delphi XE7 Architect
 
#6

AW: Application.Mainform / Code wird ignoriert

  Alt 10. Dez 2013, 19:42
Ok, hat sich erledigt.

Die Sache mit dem Wald und den Bäumen...

Vielen Dank nochmal.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:41 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