![]() |
Problem: Manchmal funktioniert es, manchmal nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe ein Problem bei meinem Programm. Es soll später ein Menü werden, mit dem ich selbst gewählte Programme und Dateien öffnen kann ohne lange zu suchen. Jedoch hab ich ein kleines Problem. Das Ereignes des Button2 auf der Form 3 funktioniert nur manchmal. Manchmal will es einfach nicht. Außerdem kommen ab und zu scheinbar ohne Grund irgendwelche Fehlermeldungen.
Könnt ihr mir bitte helfen? Das Projekt habe ich angehängt. |
Re: Problem: Manchmal funktioniert es, manchmal nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Leider kann ich dir nicht sagen wo in deinem Code die Fehler liegen. Ich hab ihm sage und schreibe eine halbe Stunde gewidmet, es dann aber doch aufgegeben.
Anbei hab ich dir mal meinen Vorschlag geliefert wie man es machen kann. Ich hab viele Kommmentare rein gemacht. Ich hoffe du verstehst es. Ansonsten frag ruhig. Da fehlt noch dies und das, z.B. das Ziehen des Punktes. Aber das kannst du ja machen. |
Re: Problem: Manchmal funktioniert es, manchmal nicht
Hallo Metatron,
sei doch bitte so gut und verpasse Deinem Beitrag noch einen aussagekräftigen Titel. Danke. ;-) |
Re: Problem: Manchmal funktioniert es, manchmal nicht
Du solltest die Bereichsprüfung etc. aktivieren, vieleicht findet dein Programm so seine Fehler selbst? Welche Delphiversion hat du? Delphi 5 z.Bsp. mag kein "var" vor class member Variablen, wie es bei deinem tform1 der Fall ist. Außerdem werden nicht alle Variablen initialisiert - oft auch ein Grund für "mal geht's und mal nicht".
|
Re: Problem: Manchmal funktioniert es, manchmal nicht
Zitat:
Ich habe auch mal ein ähnliches Programm geschrieben bei mir funktioniert das ohne Probleme. Ich verwend zum öffnen von Dateien bzw. Programm diese Procedure
Delphi-Quellcode:
procedure TMainForm.ExecuteProgramm(const PFileName: string);
var SEInfo: TShellExecuteInfo; ExitCode: DWORD; ExecuteFile, ParamString, StartInString: string; begin ExecuteFile:=PFileName; FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or //<- Hier würde ich hinschreieben Application.Terminated=False; Application.Terminated; //edit: und das hier löschen end else begin Application.MessageBox('Fehler beim Starten des Programms', 'Programm Starten', mb_OK+mb_IconError); end; end; |
Re: Problem: Manchmal funktioniert es, manchmal nicht
Danke für den Hinweis.
Das man meinen Punkt nicht bewegen kann lag einfach daran, das ich mir dachte: Das bißchen kann der gute Metatron220 auch selbst noch machen. Klar ist das Tray-Icon schöner. Aber das wollte ich dem Fragesteller überlassen. Mein Programm war nur als Veranschaulichung gedacht, um zu zeigen wie man so etwas größtenteils fehlerfrei und nachvollziehbar implementiert. :) |
Re: Problem: Manchmal funktioniert es, manchmal nicht
Vielen Dank für die Hilfe. Ich hab das Ganze jetzt einfach nochmal komplett neu geschrieben. Der Code war eh zu sehr zusammengepuzzelt und völlig undurchsichtig *g*
|
Re: Problem: Manchmal funktioniert es, manchmal nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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