Autor Beitrag
ralfi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 153



BeitragVerfasst: Sa 08.11.03 16:15 
Hallo!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.show
end;


Beim Klick erscheint in Windows 98 manchmal folgende Meldung:
Win 98 hat folgendes geschrieben:
A call to an OS function failed


In Windows XP alles in Ordnung. Was ist das? Ich habe auf der Form2 mehrere Komponenten wie ComboBox, GroupBox, Editfeld, Label, Button, RichEdit. So insgesammt ca. 50 komponenten auf der Form.

Moderiert von user profile iconTino: Delphi- & Quote-Tags hinzugefügt; Titel geändert


Zuletzt bearbeitet von ralfi am Sa 08.11.03 16:31, insgesamt 1-mal bearbeitet
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 08.11.03 16:21 
... irgendwie macht dein Code für mich keinen Sinn. Wenn du auf Form1 den Button klicken kannst, warum soll die Form1 dir dann gezeigt werden? Wenn du da klicken kannst, ist sie doch schon daß :roll: Und wenn du 50 Komponenten auf der Form2 hast, ist diese dann auch schon da, oder? Warum produzierst du die dann?

_________________
Hasta La Victoria Siempre
ralfi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 153



BeitragVerfasst: Sa 08.11.03 16:40 
Mit form1 meinte ich Form2, habe schon geändert.

Und die Form soll nich automatisch beim Start des Programms erstellt werden, das diese vielleicht überhaupt nich gebraucht wird...

Mich interessiert nur, was ist das für ein Fehler?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 08.11.03 16:54 
Titel: Andere Methode
Hallo!

Also, ich benutze statt der Application.CreateForm - Methode in der Anwendung selbst immer folgendes:

ausblenden Delphi-Quelltext
1:
2:
If Form2=nil then Form2:=Form2.Create(Application);
Form2.Show;


Das hat immer funktioniert! Bei der anderen Methode hatte ich auch manchmal Probleme, wenn ich sie außerhalb der Projektdatei in einer Unit benutzt habe!

Dabei ist auch eine andere Möglichkeit für das Problem berücksichtigt, nämlich dass das Formular bereits erzeugt wurde und gar nicht neu erzeugt werden muss.
(Da das Formular nur bei Bedarf erzeugt werden soll, hast Du ja sicherlich in den Projektoptionen das automatische Erzeugen dieses Formulares ausgeschaltet.)
Wenn das Formular also bereits besteht, könnte es bei der Verwendung mancher Komponenten zu Fehlern kommen. Daher teste ich oben vorher, ob das Fenster bereits vorhanden (<>nil) ist.

Ach so: Manchmal wird das Formular nicht richtig aus dem Speicher entfernt, auch wenn Du im onClose-Ereignis
ausblenden Delphi-Quelltext
1:
Action:=caFree;					

angegeben hast.
Dann solltest Du caFree möglichst entfernen oder anders überprüfen, ob das Fenster entfernt wurde (per Boolean-Variable...).

Und wenn Du mehrmals das selbe Fenster verwendest, solltest Du auch mehrere Variablen des Typs TForm2 benutzen.

Ich hoffe das hilft,
S.J.
ralfi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 153



BeitragVerfasst: Sa 08.11.03 17:04 
In dem Projectunit ist CreateForm für TForm2 nicht dabei, das heisst, die Form wird nich automatisch beim Start esrtellt.

Und die Fehlermeldung erscheint nach dem ersten ButtonKlick, so das die gar nicht bereits geöffnet werden kann, allerdings nur im Windows 98.

Interessant: ich habe gerade die Zeile
ausblenden Quelltext
1:
Application.CreateForm(TForm2, Form2);					


zurück in die Projectunit geschrieben und die Button1Click einfach Form2.Show geschrieben. Jetzt erscheint diese Fehlermeldung beim Start des Programms, vermutlich beim erstellen der Form2. Das soll also ein Fehler bei der Erstellung in der Form2 sein. Komisch ist, dass mit WIndows 2000 und XP alles super läuft...

Hat jemand schon mit so einer Situation zu tun gehabt?
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Sa 08.11.03 23:59 
... nenn' mich dumm, aber

ralfi hat folgendes geschrieben:

Ich habe auf der Form2 mehrere Komponenten wie ComboBox, GroupBox, Editfeld, Label, Button, RichEdit. So insgesammt ca. 50 komponenten auf der Form.


klingt für mich immer noch unverständlich. Wie kannst du 50 Komponenten auf einer Form haben, die es beim Programmstart nicht gibt? :roll: Kläre mich mal auf.. :P

_________________
Hasta La Victoria Siempre
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: So 09.11.03 09:55 
die from wirds schon geben! nur sie wird am anfang eben nich erzeugt (Application.CreateForm)... is alles okay soweit...

ich hab auch keine ahnung, warum Win98 da Probs macht? gitbs vierlleicht Kompos die nur unter NT/200/XP laufen? Wenn, hast du so eine vielleicht auf der Form2?



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
ralfi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 153



BeitragVerfasst: So 09.11.03 13:16 
Win98 macht es auch nicht immer. Ich meine nicht an allen Rechnern.
Manchmal zeigt er noch so was, wenn Form2 über den ButtonClick erstellt wird: Error reading ComboBox1.Items.Strings. A call to an OS function failed...

Was ist das denn für ein Sch....???[/b]
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: So 09.11.03 13:44 
Passiert das nur auf einem Win98 Rechner oder auf mehreren? Sonst würd ich drauf tippen, dass irgendwie das Windows abgeschossen wurde... Neuinstallation!


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
ralfi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 153



BeitragVerfasst: So 09.11.03 14:09 
Das passiert nicht auf einem Win98 Rechner, aber auch nicht auf allen. Das ist auch schon einmal unter WinME passiert...
ralfi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 153



BeitragVerfasst: So 09.11.03 14:41 
Könnte ein langen Form-Name so ein Fehler unter Win98 auslösen z.B. frmSearchMask???

oder ein ComboBox1.SetFocus in OnShow der Form?

oder an der FormStyle = fsStayOnTop?

Ich weiss nicht mehr weiter...
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Mo 10.11.03 08:24 
Versuch mal den Konstruktor Deiner Form2 im Einzelschritt-Modus durchzugehen und herauszufinden, wann der Fehler genau kommt. Und auf die Art gehst Du dann immer tiefer und grenzt den Fehler immer mehr ein.

barfuesser
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Mo 10.11.03 09:25 
du hast doch eine anwort schon bekommen:
Zitat:
Error reading ComboBox1.Items.Strings. A call to an OS function failed.

es hat also was mit einer aktion zu tun, welche was mit der combobox1 zu tun hat.
ist der combobox irgend etwas zugewiesen wenn das fenster erstellt/geladen wird?

kannst du mal n bisschen quellcode posten? das würde die sache weitaus einfacher machen.

_________________
Patrick
im zweifelsfall immer das richtige tun!!!