Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 21.05.03 17:49 
Hallo,
ich habe folgende funktion, die aber nur funktioniert wenn ich den ShowMessage einsetzt andefals geht er nicht, warum?
ausblenden 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'); // jetzt geht es, ohne es geht es nicht   
  until JaNein > -1;
  result:=JaNein;
end;

_________________
MFG
Michael Springwald, "kann kein englisch...."
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 21.05.03 18: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Mi 21.05.03 18: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Mi 21.05.03 18: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 :shock: ..... bau das mal ein und staune ;)


Bye :wink2:
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 21.05.03 20: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Do 22.05.03 09: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. :lol:
Leider finde ich die Projektdateien nicht mehr, ich werde sie wohl erst nochmal proggen müssen...
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 22.05.03 14: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Sa 24.05.03 11: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:

ausblenden Quelltext
1:
2:
3:
4:
5:
 try
  Image1.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:

ausblenden Quelltext
1:
2:
3:
4:
5:
 try
  Image1.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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 24.05.03 15:07 
hat er denn schonmal alternativen zum ShowMessage befel ausprobiert ?
z.b.MessageDlg ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
Da_Knuddelbaer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Sa 24.05.03 15:25 
Nein aber du kannst es ja gerne testen ;)
Dezipaitor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220



BeitragVerfasst: Sa 24.05.03 15:33 
hi
ich habe mich mal mit dem problem auseinandergesetzt:

folgendes müsste klappen (ohne FileExists):
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220



BeitragVerfasst: Sa 24.05.03 15: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 24.05.03 15: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Sa 24.05.03 16: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: So 25.05.03 01: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. :wink2: