| Autor |
Beitrag |
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Do 20.01.11 16:02
Jetzt kannst du noch kucken, was in FDefWndProc steht, da ist wahrscheinlich NIL drin. Also : Irgendwas überschreibt deine FDefWndProc.
|
|
jjturbo 
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Do 17.03.11 16:59
Also:
Ich habe mal Zeos 6.6.6 deinstalliert und die 7.0.0-alpha genommen, damit ist der Fehler beseitigt gewesen.
Es schien so schön...
Ein Kollege hatte auch das Problem mit einer solchen Zugriffsverletzung, gleiche Adresse, das gleiche Grundgerüst als Programm. Bei ihm hat das Verwenden der neueren Zeos-Kompos keine Besserung gebracht.
Also habe ich heute mal sein ganzes Projekt Stück für Stück zerpflückt. Ein TLMDSpeedButton auf unserer HauptForm ist für das Beenden des Programms vorgesehen:
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:
| procedure THauptForm.FTastenClick(Sender: TObject); var NrFTaste :Integer; s :String; begin
s := (Sender as TLMDSpeedButton).Name; Delete(s,1,15); NrFTaste := StrToIntDef(s,-1);
Case NrFTaste of 1: AufHandSchalten; 2: AufAutomatikSchalten; 3: AutomatikHalt; 4: AutomatikFortsetzen; 5: AnlageReset; 7: Werkzeugwechelposition; 10: begin PostMessage(HauptForm.Handle,WM_CLOSE,0,0); end; 12: ResetDrucker; end;
end;
procedure THauptForm.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); begin
Case Key of 112: FTastenClick(LMDSpeedButtonF1); 113: FTastenClick(LMDSpeedButtonF2); 114: FTastenClick(LMDSpeedButtonF3); 115: FTastenClick(LMDSpeedButtonF4); 116: FTastenClick(LMDSpeedButtonF5); 118: FTastenClick(LMDSpeedButtonF7); 121: FTastenClick(LMDSpeedButtonF10); end;
end; |
Mit der Maus auf der LMDSpeedButtonF10: Fehler, auf der Tastatur F10 gedrückt alles in Ordnung, obwohl der gleiche Code ausgeführt wird.
Dann habe ich es mal mit einem TButton probiert, da gings mit Maus und Tastatur ohne Probleme. Jetzt habe ich festgestellt, dass es bei dem TLMDSpeedButton eine Option "UseGlobalTimer" gibt, diese von False auf True gesetzt und alles funktioniert wie gewünscht...
Weiß jemand, wofür diese Property gut ist? Wir haben schon einige Projekte am laufen, die alle die gleiche Leiste mit den FTasten haben.
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Do 17.03.11 17:24
Irgend ein Wiederspruch in Deiner Aussage. Ihr verwendet ja 10x LMDSpeedButton und nur bei LMDSpeedButtonF10 krachts
Da würde ich doch sicherhalts halber mal nicht die Eigenschaften ändern, sondern mal in der KeyDown zum Schluss folgendes reinschreiben Key:= 0. Jetzt kannst du testen, ob der Fehler weiter Auftritt.
quatsch: passiert ja beim Mausclick. Dann ruf doch einfach nur close auf anstatt Postmessage. nun schau was passiert!?
Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
jjturbo 
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Fr 18.03.11 07:23
Widerspruch würde ich nicht sagen.
F10 soll ja das Programm beenden, dabei werden im Gegensatz zu den Aktionen auf den anderen Buttons ziemlich viele Komponenten freigegeben.
Ein einfaches Close an der Stelle habe ich natürlich auch probiert. Genau das selbe.
Ich habe spasseshalber an der Stelle statt "Close" mal einen 100ms-Timer enabled, bei dem im OnTimer-Ereignis HauptForm.Close aufgerufen wird: Das gleiche Verhalten, mit der Maus geklickt krachts, mit F10 ok.
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Fr 18.03.11 12:49
mh..
sieht ja so aus das nicht alles frei gegeben wird?
Der Aufruf close ruft closequery auf. Prüfst du dort ob alles freigegeben wurde? Mal getestet?
Vielleicht noch ein Thread offen usw.?
ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
jjturbo 
      
Beiträge: 516
Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
|
Verfasst: Fr 18.03.11 12:54
Wie kann ich denn prüfen ob alles frei gegeben wurde?
Aber eigentlich ist zu dem Zeitpunkt alles frei gegeben worden.
Ich hatte ja auch ein annähernd leeres Projekt, in dem dieser Fehler auftrat. Darin hatte ich eh alle Threads usw. raus geschmissen.
_________________ Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 18.03.11 12:59
Naja, du hast doch weiter oben schon geschrieben, dass es an den komischen Buttons liegt. Du kannst ja FastMM versuchen, ob das etwas findet.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Fr 18.03.11 13:03
jjturbo hat folgendes geschrieben : | | ...Aber eigentlich ist zu dem Zeitpunkt alles frei gegeben worden. |
hab ich auch manchmal gedacht
jjturbo hat folgendes geschrieben : | ...
Ich hatte ja auch ein annähernd leeres Projekt, .... |
Nimm halt ein komplett leeres. Nur diesen einen Button, Close in diese Buttonclick und sehen ob es immer noch passiert!
Wenn ja, ist die Compo buggylie!
Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
|