Vielen Dank für die Antworten.
Ich vermute mittlerweile, dass die Ursache eine andere ist. Die ist mir dann aber auch nicht verständlicher. Ich zeig mal einen Ausschnitt aus dem Code:
Delphi-Quellcode:
procedure wmPasswortDialog (var Message_vb : TMessage); message wm_PasswortDialog;
procedure TFormPasswort_dd.FormCreate (Sender : TObject);
begin
Inherited;
if FileExists (ChangeFileExt (Application.ExeName, '.Tresor')) then
begin
PasswortAnforderung := dtPasswortBestaetigen;
...
...
end
else
PasswortAnforderung := dtPasswortDefinieren
end;
procedure TFormPasswort_dd.FormShow (Sender : TObject);
begin
Inherited;
...
...
PostMessage (Self.Handle,
wm_PasswortDialog,
PasswortAnforderung,
0)
end;
procedure TFormPasswort_dd.wmPasswortDialog (var Message_vb : TMessage);
begin
if Message_vb.wParam ...... then
...
...
end;
In FormCreate wird die Variable PasswortAnforderung gesetzt, in FormShow wird sie mit PostMessage weitergeleitet und in wmPasswortDialog kommt sie nicht an. Deshalb hatte ich erstmal den Verdacht, dass es am PostMessage liegt.
Aber könnte es sein, dass die FormShow-Methode schon durch das Inherited im FormCreate aufgerufen wird. Dann wäre die Variable PasswortAnforderung natürlich noch nicht definiert. Nur wäre mir dann nicht klar, wieso bei einem 32-Bit-Windows FormCreate und FormShow nacheinander ablaufen, bei einem 64-Bit-Windows dahingegen das FormShow schon ablaufen sollte, bevor das FormCreate komplett abgearbeitet ist.
Ich hab das Programm mal auf die wesentlichen Teile reduziert und mit ShowMessages die einzelnen Aktionen ausgegeben. Als Ausgaben kommen jetzt bei mir:
- FormCreate startet
- FormCreate nach Inherited
- FormCreate: PasswortAnforderung := dtPasswortDefinieren
- FormCreate endet
- FormShow startet
- FormShow sendet mit PostMessage
- wmPasswortDialog 1
- FormShow endet
Das ist das, was ich erwartet hatte.
Ich habe das Testprogramm (Quellen und Exe-File) als Zip-Datei angehängt. Vielleicht kann das mal jemand unter einem 64-Bit-Windows ausprobieren und gucken, ob die Meldungen in der gleichen Reihenfolge erscheinen.
Vielen Dank schon mal
Klaus