![]() |
Probleme bei Eingabe mit Inputbox
Hi Leute!
ich hab ein kleines, aber irgendiwe sehr ärgerliches Problem mit der Inputbox und komme einfach nicht weiter. Ich möchte einfach einen String mit wenigen Zeichen über eine Inputbox einlesen. Die Variable ist global deklariert! Die Inputbox wird beim Laden einer Form aufgerufen. Sobald ich das Programm starte, erscheint die Box mit dem im Sourcecode vordefinierten Default Text. klicke ich jetzt allerdings in das Textfeld der Inputbox, hängt sich das Programm auf. Die Systemauslastung des Prozesses steigt auf 100% und das Programm lässt sich nur noch über den Task Manager beenden. Lege ich die Variable statisch, also direkt über eine Zuweisung aus dem Sourcecode fest, funktioniert alles wunderbar. Ich werde euch den Sourcecode mal eben unter mein Problem stellen, vielleicht hat ja jemand von euch eine Idee, ich schätze dass die Lösung ganz einfach ist nur dass ich einfach nicht drauf komme.
Delphi-Quellcode:
Besten Dank!
procedure TMainForm.FormCreate(Sender: TObject);
begin path:=Inputbox('Eingabe','Gib hier den Pfad an:','C:\'); if fileexists(path + 'muh.txt') then stdMemo.Lines.LoadFromFile(path + 'Session.txt'); end; |
Re: Probleme bei Eingabe mit Inputbox
Hallo,
das Problem liegt höchstwahrscheinlich nicht an diesem Code. Da kann ich keine Fehler entdecken. Versuche mal, das ganze ins OnFormShow zu verschieben. |
Re: Probleme bei Eingabe mit Inputbox
die Form ist zum einen unsichtbar, un zum zweiten hab ich nur formopen und formclose zu verfügung
aber ich verstehe immer noch nicht wieso diese inputbox sich aufhängt, ich habe sie in einem andere programm unter den gleichen voraussetzungen getestet un da geht alles :gruebel: |
Re: Probleme bei Eingabe mit Inputbox
Hallo Daniel,
versuch mal:
Delphi-Quellcode:
Es könnte evtl. sein. dass der Zugrif auf das Memo Probleme macht, da das übergeordnete Fenster nocgh nicht sichbar ist. Allerdings müsste dann eigentlich eine Fehlermeldung erscheinen!?
procedure TMainForm.FormCreate(Sender: TObject);
begin path:=Inputbox('Eingabe','Gib hier den Pfad an:','C:\'); if fileexists(path + 'muh.txt') then sysutils.beep; // stdMemo.Lines.LoadFromFile(path + 'Session.txt'); end; Alternativ setzt Du den beep hinter den Memoaufruf, dann siehst (hörst ;-) Du, ob das Programm bis dort hin funtioniert. Stahli |
Re: Probleme bei Eingabe mit Inputbox
keine chance, also ich habe ja einen vordefinierten wert in der inputbox angegeben, wenn cih einfach nur auf ok drücke übernimmt er den wert, nur sobald ich einen eingabe machen will hängt er sich auf? WTF^^
ich glaube dafür gibt es keine lösung oder? |
Re: Probleme bei Eingabe mit Inputbox
Was passiert, wenn du keinen Vorgabewert übergibst? (Einfach '' übergeben)
|
Re: Probleme bei Eingabe mit Inputbox
Hallo,
die Ereignisbehandlung für OnCreate() der Form sollte keine Interaktion mit dem Benutzer enthalten. Das ist doch auch gar nicht nötig. Die VCL sieht dieses Ereignis vor, damit der Entwickler zu diesem Zeitpunkt Objekte instanzieren kann, die nicht durch das VCL-Streaming instanziert werden können. Aber auch wenn man das Konzept ignoriert: Der Aufruf von IntputBox() alleine kann nicht das im Betrag #1 beschriebene Verhalten begründen. Das kann man auch sehr einfach selbst ausprobieren, indem man eine leere Form hernimmt und in deren OnCreate() InputBox() aufruft. Freundliche Grüße |
Re: Probleme bei Eingabe mit Inputbox
danke für den hinweis marabu, nur leider habe ich in meinem programm keine andere möglichkeit eine eingabe zu tätigen :(
|
Re: Probleme bei Eingabe mit Inputbox
Zitat:
Zitat:
Selbst Exceptions können zu diesem frühen Zeitpunkt möglicherweise noch nicht richtig angezeigt werden. Speichere die Datei nicht in StdMemo.lines sondern in einem selbst erzeugten TStringList Objekt, dann klappts. |
Re: Probleme bei Eingabe mit Inputbox
also ich denke wir kommen hier net weiter ;) ich kann euch aber leider nicht da komplette programm posten, sonst würdet ihr durch aus sehen dass keine andere stelle für eine eingabe möglich ist, außer vllt einen ausgelagerte function, naja mal sehen... aba trotzdem danke für eure anregungen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz