| Autor | Beitrag | 
| mimi 
          Beiträge: 3458
 
 Ubuntu, Win XP
 Lazarus
 
 | 
Verfasst: Mi 21.05.03 16:49 
 
Hallo,
 ich habe folgende funktion, die aber nur funktioniert wenn ich den ShowMessage einsetzt andefals geht er nicht, warum?
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 | function TSokubahn.ShowMyDialog(aCaption,aDialogText:String; aDialogTyp:Integer):Integer;var
 raus:Boolean;
 begin
 raus:=False;
 strCaption:=aCaption;
 strText:=aDialogText;
 DialogTyp:=aDialogTyp;
 DrawDialog:=True;
 JaNein:=-1;
 
 repeat
 application.ProcessMessages;
 ShowMessage('TEST');   until JaNein > -1;
 result:=JaNein;
 end;
 | _________________ MFG
   Michael Springwald, "kann kein englisch...."
 | 
|  | 
| mimi  
          Beiträge: 3458
 
 Ubuntu, Win XP
 Lazarus
 
 | 
Verfasst: Mi 21.05.03 17:00 
 
jetzt geht es auch ohne ShowMessage, ich habe einfach application.HandleMessage genommen, aber warum geht es jetzt ? was ist der unterschied ? _________________ MFG
   Michael Springwald, "kann kein englisch...."
 | 
|  | 
| Da_Knuddelbaer 
          Beiträge: 485
 
 
 
 
 | 
Verfasst: Mi 21.05.03 17:32 
Titel: bekanntes Problem
 
Hey mimi, exakt das gleiche Phänomen hatte ich vor der Info-Abiturklausur auch gehabt. Beispeilsweise habe ich ein Fibonacci programmiert, ohne ShowMessage hat es funktioniert, MIT ShowMessage aber nicht. Mir scheint es liegt daran dass Delphi bei seinen Programmen eine gewisse Zeit benötigt um Aufgaben zu erfüllen. Wenn diese Zeit beispielsweise durch ShowMessages überschritten oder gar unterschritten werden dann kommt es zu Fehlern, die aber nicht im Quellcode selber liegen.
 Ich gebe dir morgen früh mal ein paar Beispiele, die alle richtig sind und genau das berechnen was sie sollen, abhängig davon ob eine ShowMessage vorhanden ist oder nicht    Gruß,
 Knuddelbaer | 
|  | 
| TheNeon 
          Beiträge: 408
 
 Windows
 VS2010 C#
 
 | 
Verfasst: Mi 21.05.03 17:36 
 
... tja ....... Gott sei dank kam Fibbonacci nicht dran     naja .... ich und Knuddelbaer haben aber auch festgestellt, dass es anstatt von Showmessage  auch mit sleep(100)  geht     ..... bau das mal ein und staune     Bye   | 
|  | 
| mimi  
          Beiträge: 3458
 
 Ubuntu, Win XP
 Lazarus
 
 | 
Verfasst: Mi 21.05.03 19:12 
 
komische geschiechten, ich hatte das schon ein paar mal erlebt das es MIT SCHOMESSAGE geht und ohne Schowmessage nicht.
 was ist ein "Fibbonacci" ?
 ich habe noch keine erklärung dafür gefunden, was macht schowMessage genau ?
 ruft es das formula einfach mit ShowModel auf ?
 _________________ MFG
   Michael Springwald, "kann kein englisch...."
 | 
|  | 
| Da_Knuddelbaer 
          Beiträge: 485
 
 
 
 
 | 
Verfasst: Do 22.05.03 08:15 
 
Ich weiss es ehrlich gesagt nicht. Aber es muss dennoch Zeitbedingt sein da es ja wie weiter oben steht auch mit einem einfachen Sleep-Befehl von MINDESTENS 50 ms geht. Bei einem Wert kleiner 50 kommen die gleichen Fehler wie ohne ShowMessage.
 Die Fibonacci-Zahlenfolge ist eine simple Addition der beiden Vorgängerzahlen zur Nachfolgerzahl bis zum n-ten Element.
 Beispiel:
 3 7 10 17 27 44 71 115 ...
 oder
 1 2 3 5 8 13 21 34 ...
 Wir hatten schon vor spasseshalber mal Borland zu fragen was es wirklich mit der ShowMessage auf sich hat, zumal ein Einserkandidad bei uns (weiblich natürlich) am gleichen Tag bei einem anderen Prog genau das gleiche Problem mit einer ShowMessage hatte.     Leider finde ich die Projektdateien nicht mehr, ich werde sie wohl erst nochmal proggen müssen... | 
|  | 
| mimi  
          Beiträge: 3458
 
 Ubuntu, Win XP
 Lazarus
 
 | 
Verfasst: Do 22.05.03 13:58 
 
schade, aber das wunder mich immer wieder bei ShowMessage
auch in anderen projekten ist das der fall...
 
 ich würde gerne mal wissen was ShowMessage genau macht,einfach ein form auf den bildschrim erstellt wohl nicht....
 _________________ MFG
   Michael Springwald, "kann kein englisch...."
 | 
|  | 
| Da_Knuddelbaer 
          Beiträge: 485
 
 
 
 
 | 
Verfasst: Sa 24.05.03 10:24 
 
Mein Bruder hat noch ein weiteres ShowMessage-Problem:
 Fügt mal bitte in einem neuen Projekt zuerst 3 Edits, ein Image und 2 UpDowns ein. Setzt die UpDown auf Edit2 und Edit3.
 Danach fügt bei einem UpDown (ursprünglich bei UpDOwn 2 was auf Edit3 zeigt) folgenden Code ein:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 |  tryImage1.Picture.LoadFromFile (IntToStr(Updown2.Position) +'.bmp');
 except
 ShowMessage (IntToStr(Updown1.Position));
 end;
 |  Ihr könnte gerne im Verzeichnis ein paar Bilder die durchnummeriert sind einfügen (wäre vielleicht besser).
 Und noch was:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 |  tryImage1.Picture.LoadFromFile (IntToStr(Updown2.Position) +'.bmp');
 finally
 ShowMessage (IntToStr(Updown1.Position));
 end;
 |  hat auch einen tollen Effekt, egal wo ihr dann hinklickt, es wird dann immer auf das Teil geklickt, auch Alt-F4 wird nicht funzen. Lediglich Rechtsklick und der Taskmanager helfen da.
 Greetz,
 Knuddelbaer    | 
|  | 
| mimi  
          Beiträge: 3458
 
 Ubuntu, Win XP
 Lazarus
 
 | 
Verfasst: Sa 24.05.03 14:07 
 
hat er denn schonmal alternativen zum ShowMessage befel ausprobiert ?
z.b.MessageDlg ?
 _________________ MFG
   Michael Springwald, "kann kein englisch...."
 | 
|  | 
| Da_Knuddelbaer 
          Beiträge: 485
 
 
 
 
 | 
Verfasst: Sa 24.05.03 14:25 
 
Nein aber du kannst es ja gerne testen   | 
|  | 
| Dezipaitor 
          Beiträge: 220
 
 
 
 
 | 
Verfasst: Sa 24.05.03 14:33 
 
hi
 ich habe mich mal mit dem problem auseinandergesetzt:
 folgendes müsste klappen (ohne FileExists):
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 
 | procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);begin
 try
 Image1.Picture.LoadFromFile (IntToStr(Updown2.Position) +'.bmp');
 except
 Updown2.Position := Updown2.Position-1;
 UpDown2Click(Sender,Button);
 end;
 end;
 |  | 
|  | 
| Dezipaitor 
          Beiträge: 220
 
 
 
 
 | 
Verfasst: Sa 24.05.03 14:39 
 
@mimi :
 ich habe folgende Erklärung parat :
 
 das liegt an der Art wie ProcessMessages und HandleMessage
 die Nachrichtenschlange abarbeiten :
 
 die hilfe zu ProcessMessages sagt :
 Interrupts the execution of an application so that it can process the message queue.
 
 die hilfe zu  HandleMessage sagt:
 Interrupts the execution of an application while Windows processes a message in the Windows message queue.
 
 
 der unterschied liegt bei beiden in den unterstrichenen wörtern:
 während ProcessMessages die gesamte WindowsNachrichtenschlange abarbeitet (also alle Fenster),
 schaut HandleMessage nur nach den Nachrichten für seine Anwendung (TApplication).
 Daher kann es passieren, dass bei ProcessMessages die Anwendung zuerst mal garkeine Rechenzeit bekommt, besonders wenn das empfangen der Nachrichten in TApplication durch eine Endlosschleife blockiert wird.
 
 
 das ganze ist aber alles sehr undurchsichtig,wie windows nachrichten und rechenzeit verteilt.
 deshalb gebe ich keine 100% garantie darauf.
 
 
 
 
 [/u]
 | 
|  | 
| mimi  
          Beiträge: 3458
 
 Ubuntu, Win XP
 Lazarus
 
 | 
Verfasst: Sa 24.05.03 14:46 
 
und wie passt das nun zusammen ?
ich würde wirklich wissen was showMessage macht, kann mir das jemmand genau sagen ?
 _________________ MFG
   Michael Springwald, "kann kein englisch...."
 | 
|  | 
| Da_Knuddelbaer 
          Beiträge: 485
 
 
 
 
 | 
Verfasst: Sa 24.05.03 15:35 
 
@dezipaitor:
 Es klappt genauso gut wenn man einfach die ShowMessage rausnimmt    Sobald diese ShowMessage-Zeile entfernt wurde funktioniert alles wunderbar.
 In diesem Thread geht es uns um die wahre Bedeutung und Arbeitsweise der ShowMessage, die entweder Fehler behebt oder gar Fehler verursacht. | 
|  | 
| TheNeon 
          Beiträge: 408
 
 Windows
 VS2010 C#
 
 | 
Verfasst: So 25.05.03 00:24 
 
	  | Da_Knuddelbaer hat folgendes geschrieben: |  	  | @dezipaitor: Es klappt genauso gut wenn man einfach die ShowMessage rausnimmt
   Sobald diese ShowMessage-Zeile entfernt wurde funktioniert alles wunderbar.
 
 In diesem Thread geht es uns um die wahre Bedeutung und Arbeitsweise der ShowMessage, die entweder Fehler behebt oder gar Fehler verursacht.
 | 
 ..... da showmessage  jedoch dasselbe bewirkt wie sleep(100)  hat dezipaitor garnicht mal so unrecht mit der Asoziation.    | 
|  |