Fehler bei Ermittlung einer Textlänge in TEdit

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
haderlump
Beiträge: 185
Registriert: Fr 18. Jan 2013, 09:29
OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
CPU-Target: Celeron

Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von haderlump »

Hallo zusammen
Ich will einen Taschenrechner programmieren
Dabei muß ich auch ein Komma eingeben. Um mehrere Kommas zu vermeiden teste ich den Eingabestring für die Zahl auf ein bereits vorhandenes Komma.
Ich will also den String im Eingabefeld mittels einer for next Schleife testen. Dazu brauche ich die Textlänge die ich aus eingabe.text.Length holen möchte.
Beim compilieren kommt dann der Fehler:"Illegal qualifier".
eingabe ist TEdit.
Wo ist der Wurm?
Vielleicht gibt es auch eine bessere lösung für den Kommatest?

Code: Alles auswählen

procedure TForm1.Button_KommaClick(Sender: TObject);
var a,textlaenge:integer;
begin
  textlaenge := eingabe.text.Length;

  //Kommatest
  {for a ;= 0 to textlaenge do

  if eingabe,text(a) = ',' then
    begin
      messagebox('es darf kein 2.Komma verwendet werden');
      exit;

    end
  else
    eingabe.Text:=eingabe.text+',';  }
  modustest;
  refresh;
end;                   

Benutzeravatar
gladio
Beiträge: 197
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von gladio »

In deinem auskommentierten Teil sind mir zwei Schreibfehler aufgefallen:
for a ;= 0 to ...
...if eingabe,text(a)

Benutzeravatar
theo
Beiträge: 9911
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von theo »

Mach es so:

Code: Alles auswählen

textlaenge := Length(eingabe.Text);     
Und fange bei 1 an mit dem Loop, nicht bei 0. Strings beginnen bei 1.

Benutzeravatar
Ally
Beiträge: 225
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von Ally »

Hallo haderlump,

kurz und knackig :) :

Code: Alles auswählen

if Pos(',', eingabe.text) > 0 then
  messagebox('es darf kein 2.Komma verwendet werden');
Oder probier mal RhsPack - DecimalNumberEdit aus dem Online-Package-Manager.

Gruß und frohe Weihnachten
Roland

Benutzeravatar
theo
Beiträge: 9911
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von theo »

Je nach Zweck geht auch das TFloatSpinEdit aus dem Misc Tab.

wp_xyz
Beiträge: 4501
Registriert: Fr 8. Apr 2011, 09:01

Re: Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von wp_xyz »

Und was ist, wenn das Komma an völlig verrückten Stellen steht? "2e,3" Oder ganz andere Fehler vorliegen: '2a,43' oder '+-4,345'?

Ich würde mich mit solchen Details nicht abgeben, sondern mit TryStrToFloat einfach den eingegebenen String in einen Float umwandeln und den boolschen Rückgabewert der Funktion auswerten und im Fehlerfall eine allgemeine Fehlermeldung erzeugen. Wenn jemand nach so einer allgemeinen Fehlermeldung nicht erkennt, dass er zwei Kommas angegeben hat, kann er mit dem Programm eh nichts anfangen:

Code: Alles auswählen

function StringZuZahl(AString: String; var Zahl: Double): Boolean;
begin
  Result := TryStrToFloat(AString, Zahl);
  if not Result then
    ShowMessage('Eingabefehler: "' + AString +'" ist keine gültige Zahl.');
end;

haderlump
Beiträge: 185
Registriert: Fr 18. Jan 2013, 09:29
OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
CPU-Target: Celeron

Re: Fehler bei Ermittlung einer Textlänge in TEdit

Beitrag von haderlump »

Danke für die Antworten, ds hat mir schon weiter geholfen.

Und noch schöne Feiertage!

Antworten