![]() |
Delphi-Version: 2010
Fehler bei Übernahme von Text aus Edit
Hallo, Delphi-Praktiker,
ich habe ein mir neues Problem, in ein Edit Text einzugeben und im Programm zu übernehmen. Gegeben: Formular mit TEdit und einem Button Ziel: Text aus Edit-Feld übernehmen (= auf String-Variable zuweisen), wenn Button "OnClick" Problem: Es wird in der OnClick-Routine nur das übernommen, was als Vorgabe schon in edit.text steht, Änderungen werden nicht berücksichtigt. ReadOnly ist false, ich kann auch ins Edit-Feld schreiben, übernommen wird aber immer nur, was vordefiniert war. Beste Grüße Klaus-Peter |
AW: Fehler bei Übernahme von Text aus Edit
Zeig mal den Code, den du dafür nutzt.
|
AW: Fehler bei Übernahme von Text aus Edit
Liest Du vielleicht aus dem falschen Edit?
Delphi-Quellcode:
sollte zuverlässig funktionieren.
S := MyEdit.Text;
|
AW: Fehler bei Übernahme von Text aus Edit
Code:
Benutzer ist ein global vereinbarter String.
procedure TfrmTitel.btnAnmeldenClick(Sender: TObject);
// Benutzer anmelden begin Benutzer:= frmTitel.Edit1.Text; Passwort:= frmTitel.ledPasswort.Text; BenAnmelden; end; Wie gesagt: Text, der schon im Objekt-Inspektor für Edit1.Text definiert wird, wird immer nach Benutzer zugewiesen, auch, wenn im Programmlauf - vor btnAnmeldenClick - manuell etwas anderes ins Edit-Feld geschrieben wurde. KP |
AW: Fehler bei Übernahme von Text aus Edit
Globale Variablen sind schon sehr mal sehr böse, denn es kann sein, dass daher der Fehler kommt! Warum gibst du BenAnmelden nicht zwei Parameter, Benutzer und Passwort eben und übergibst diese?
Unüblich ist auch der Zugriff auf frmTitel. Mir ist schon klar, dass frmTitel eine globale Variable ist, aber wenn du mal eine weitere Instanz von TfrmTitel hast, dann greift dein Code nur auf eine zu, was falsch ist. |
AW: Fehler bei Übernahme von Text aus Edit
Hallo, shark,
probier ich gerne aus, aber: Das Auslesen von Edit1.Text geht ja anscheinend prinzipiell (s. Vorbelegung). Das nutzt in der Praxis natürlich nichts, man will ja in edit etwas eingeben/ändern und das dann übernehmen. KP |
AW: Fehler bei Übernahme von Text aus Edit
Der Code, den du oben gezeigt hast, funktioniert zu 100%! Somit ebenso das Auslesen der geänderten Werte. Der Fehler liegt somit wo anders, ich glaub an diesen globalen Variablen.
|
AW: Fehler bei Übernahme von Text aus Edit
Delphi-Quellcode:
Haltepunkt auf BenAnmelden gesetzt --> In ben steht nur der Text, der in Edit1 vordefiniert war.
procedure TfrmTitel.btnAnmeldenClick(Sender: TObject);
// Benutzer anmelden var ben, pw: string; begin ben:= frmTitel.Edit1.Text; pw := frmTitel.ledPasswort.Text; BenAnmelden(ben, pw); end; ??? KP |
AW: Fehler bei Übernahme von Text aus Edit
Lass mal das frmTitel weg. Du befindest dich ja schon in der Klasse. Da kann Delphi etwas durcheinanderkommen.
|
AW: Fehler bei Übernahme von Text aus Edit
Versuch mal als Test:
Delphi-Quellcode:
frmTitel.Edit1.Color := clRed;
Ich wette, dass Du ein falsches Edit benutzt. |
AW: Fehler bei Übernahme von Text aus Edit
Ich glaube eher, du verwendest die falsche Instanz von TfrmTitel:
ersetze das
Delphi-Quellcode:
durch
frmTitel.Edit1.Text;
Delphi-Quellcode:
self.Edit1.Text;
|
AW: Fehler bei Übernahme von Text aus Edit
Hallo, Luckie,
das darf nicht wahr sein:
Delphi-Quellcode:
Das geht !
procedure TfrmTitel.btnAnmeldenClick(Sender: TObject);
// Benutzer anmelden var ben, pw: string; begin ben:= Edit1.Text; pw := ledPasswort.Text; BenAnmelden(ben, pw); end; Warum auch immer ??? Vielen dank allen Diskutanten KP |
AW: Fehler bei Übernahme von Text aus Edit
Lade mal Dein Projekt als Zip hoch, dann können wir es Dir sicher erklären...
|
AW: Fehler bei Übernahme von Text aus Edit
Son Quatsch, ich kann es so erklären:
frmTitel ist eine globale Variable (oder fast) Das Formular wird in dem dpr-file erzeugt:
Delphi-Quellcode:
Dann kommt der programmierer und erzeugt in irgendeiner seiner funktionen ein anderes Formular. Das hat zwar den selben Typ, aber es ist ein seperates Formular.
CreateForm(frmTitel, TfrmTitel)
Greift jetzt der programmierer auf die globale Varible zu, erhält er eben nur die Variablen der ersten Instanz. Deshalb muss in Methoden einer Klasse immer auf die aktuelle Instanz zugegriffen werden. Das erreicht man indem man self davorschreibt, oder es komplett weglässt. |
AW: Fehler bei Übernahme von Text aus Edit
Ich hatte 2 Ideen:
- 2 Formularinstanzen - ein dynamisch erzeugtes Edit1 in der frmTitel.pas Man kann es nicht wissen... |
AW: Fehler bei Übernahme von Text aus Edit
Füge mal diesen Code ein, dann sollte das klarer werden :mrgreen:
Delphi-Quellcode:
procedure TfrmTitel.btnAnmeldenClick(Sender: TObject);
// Benutzer anmelden var ben, pw: string; begin if Self <> frmTitel then ShowMessage( 'Ich Depp will doch auf die falsche Instanz zugreifen!' ); ben:= Edit1.Text; pw := ledPasswort.Text; BenAnmelden(ben, pw); end; |
AW: Fehler bei Übernahme von Text aus Edit
@Sir Rufo: Dein Beitrag ist aber nur FSK 18, wegen bösen Begriffen -- frag doch bitte erst mal nach dem Alter :mrgreen:
|
AW: Fehler bei Übernahme von Text aus Edit
@Stahli: "Edit1" dynamisch? nie und nimmer.:wink:
Da fress ich nen Besen wenn das dynamisch ist. |
AW: Fehler bei Übernahme von Text aus Edit
Dann hol ich schon mal einen Besen. Warum sollte er das nicht "überschreiben" können. Wenn er irgendwo
Delphi-Quellcode:
macht, dann ist das schneller passiert als man denkt ;) Das ist zwar sehr unwahrscheinlich, aber möglich.
Edit1 := TEdit.Create(frmTitle) // etc
|
AW: Fehler bei Übernahme von Text aus Edit
Zitat:
Ok, ich habe das Johnny vergessen, das kann natürlich zu Missverständnissen führen :mrgreen: |
AW: Fehler bei Übernahme von Text aus Edit
Zitat:
|
AW: Fehler bei Übernahme von Text aus Edit
Ich seh schon, wir verstehen uns :mrgreen:
-- Edit: Das sollte das //etc andeuten ;) Möglich wäre es jedenfalls. |
AW: Fehler bei Übernahme von Text aus Edit
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, Delphi-Praktiker,
wie gesagt: 1. Vielen Dank 2. Das muß ich mir erst noch genauer anschauen (warum ist der voreingestellte Text aus dem Objekt-Inspektor immer lesbar ?) 3. Trotzdem wie vorgeschlagen die zip-Datei (noch nicht viel Programm da) KP |
AW: Fehler bei Übernahme von Text aus Edit
Ohne Worte
Delphi-Quellcode:
program InfektExpert;
uses Forms, InfektExpertHP in 'InfektExpertHP.pas' {frmTitel}, GlobVar in 'GlobVar.pas', Einstellungen1 in 'Einstellungen1.pas'; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TfrmTitel, frmTitel); Application.CreateForm(TfrmTitel, frmTitel); Application.CreateForm(TfrmTitel, frmTitel); Application.Run; end. |
AW: Fehler bei Übernahme von Text aus Edit
...ein paar Worte machen vielleicht doch Sinn:
Hallo Klaus-Peter, Du solltest den Programm-Quelltext erst mal nicht von Hand ändern. Ein neues Programm sieht etwa so aus:
Delphi-Quellcode:
program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.Run; end. Wenn Du dann über das Delphi-Menü neue Formulare hinzufügst, ändert Delphi Den Programm-Quelltext. Da sollte man nicht drin herum pfuschen:wink: Du erstellst 3 Instanzen Deines Formulars. Wenn dies wirklich mal nötig ist (kommt selten vor), kann man neue Formulatre auch zur Laufzeit später erzeugen. Lösche mal 2 Deiner CreateForm-Zeilen. |
AW: Fehler bei Übernahme von Text aus Edit
Und schon haben wir einen Beweiß, daß diese globalen Form-Variablen sche**e sind.
Ich vordere ja schon lange, daß dieser Mist endlich mal abgeschaft wird. > eine "lokale" Variable nur innerhalb der DPR könnte man sich selber basteln, aber schöner wäre es, wenn man karkeine verwenden müßte, wenn man zum Erstellen diese CreateForm-Methoden verwendet. Und nun nochmal der Grund, warum es hier schief lief. PS: Es wurde immer das ausgelesen, was DU von Delphi verlangt hast. :zwinker: - Delphi blendet automatisch nur das Hauptformular an, welches standardmäßig das erste erstellte Formular ist. - die anderen Forms bleiben unsichtbar, da dort standardmäßigg Visible auf False steht - die globale Variable wurde mehrfach überschrieben und es war dadurch die zuletzt erstlette Form darin verlinkt - tja, da du nun unbedingt diese blöde Globale nutzen wolltest, hast du somit immer den Text aus dessen Edits ausgelesen, aber nur die Edits einer anderen, sichtbaren Form geändert :stupid: |
AW: Fehler bei Übernahme von Text aus Edit
Hallo, Delphi-Praktiker,
man weiß ja vielleicht oft nicht, was man tut. In diesem Fall bin ich allerdings ganz sicher, daß ich weder die Zeile
Delphi-Quellcode:
"getripelt" habe noch in diesem Programmteil irgendwelche Änderungen vorgenommen habe.
Application.CreateForm(TfrmTitel, frmTitel);
Diesen initialen Code packe ich nie an, daher habe ich wahrscheinlich auch jetzt nicht dort nachgeschaut. Bei welcher Gelegenheit Delphi das getan hat, ist mir unklar. Der von mir bemerkte "Fehler" trat von Anfang an auf. KPB |
AW: Fehler bei Übernahme von Text aus Edit
Frage schließen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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