Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eingabe Zeichen für Zeichen auswerten (https://www.delphipraxis.net/57582-eingabe-zeichen-fuer-zeichen-auswerten.html)

Bernasconi 23. Nov 2005 15:03


Eingabe Zeichen für Zeichen auswerten
 
Hallo

Ich bin recht neu in Sachen Delphi und stosse jetzt schon auf mein erstes Problem. Ich suche nach einer Möglichkeit eine Eingabe in ein Editfeld Zeichen für Zeichen mit einer Konstante abzugleichen. Wenn die Eingabe nicht der Konstante entspricht, soll das falsche Zeichen angegeben werden. (ähnlich wie bei einem Rechtschreibeduden ;) )

Ich würde mich freuen, wenn mir jemand weiterhelfen könnte. :thumb: Herzlichen Dank

Freundliche Grüsse
Bernasconi

turboPASCAL 23. Nov 2005 15:12

Re: Eingabe Zeichen für Zeichen auswerten
 
Hi und willkommen in der DP.

Du hast auf deiner Form ein Editfeld und möchtest die Eingabe in diesem Feld auswerten ?
Nach jeder Eingabe eines Zeichens oder nach drücken auf einen Knopf (Button)?

rochus 23. Nov 2005 15:16

Re: Eingabe Zeichen für Zeichen auswerten
 
Delphi-Quellcode:
const
  MeineKonstante = 'IrgendeinText'
var
  i: Integer;
begin
  for i:=0 to Length(strBenutzerEingabe)-1 do begin
    if i>(Length(MeineKonstante)-1) then
    begin
      ShowMessage('Die Benutzereingabe ist kürzer als die Konstante');
    end
    else
      if strBenutzerEingabe[i] <> MeineKonstante[i] then begin
        ShowMessage('Die Stelle ' + IntToStr(i) + ' unterscheidet sich');
        Exit;
      end;    
  end;
end;

ichbins 23. Nov 2005 15:21

Re: Eingabe Zeichen für Zeichen auswerten
 
@Rochus: Stimmt nicht ganz. Benutzereingabe: 'TEXT000000' konstante: 'TEXT' -> gleich
Delphi-Quellcode:
const
  MeineKonstante = 'IrgendeinText'
var
  i: Integer;
begin
  if length(meinekonstante)<length(strbenutzereingabe) then
    ShowMessage('Die Benutzereingabe ist länger als die Konstante');
  for i:=0 to Length(strBenutzerEingabe)-1 do
    if i>(Length(MeineKonstante)-1) then begin
      ShowMessage('Die Benutzereingabe ist kürzer als die Konstante');
      break;    //abbrechen wenn ein fehler gekommen ist
    end
    else
      if strBenutzerEingabe[i] <> MeineKonstante[i] then begin
        ShowMessage('Die Stelle ' + IntToStr(i) + ' unterscheidet sich');
        Exit;
      end;    
end;
außerdem kannst du ein paar begin/end dinger weglassen ;)

Bernasconi 23. Nov 2005 15:25

Re: Eingabe Zeichen für Zeichen auswerten
 
Ja genau:
Ein Form auf dem Folgende Elemente liegen:
Editfeld
Button für Auswertung
Button für Löschen

Wenn ich im Editfeld eine Zeile geschrieben habe, klicke ich danach auf den auswerten Button.

Wenn ich darauf klicke, soll der Text kontrolliert werden, wie bei einem Rechtschreibeduden. Es sollen nur die einzelnen Zeichen die falsch sind herausgefiltert werden.

Ein Beispiel:
Verlagt wird folgende Zeichenkette. "Ich bin Franz aus den Bergen."
Wenn jetzt "Ivh bin Franz aus den Bergen." eigegeben wird, dann möchte ich folgendes Ergebnis haben: Ich möchte dass der falsche Buchstaben zum Beispiel fett dargestellt wird. Das ist ja eher einfach, einfach muss ich irgendwie einische Schlaufe aufbauen, die jedes Zeichen einzeln abgleicht und dann entscheidet wie es dargestellt werden soll. Wie mache ich sowas?

Ich hoffe ich konnte mich einigermassen Verständlich ausdrücken! :|

Der_Unwissende 23. Nov 2005 15:34

Re: Eingabe Zeichen für Zeichen auswerten
 
Zitat:

Zitat von ichbins
außerdem kannst du ein paar begin/end dinger weglassen ;)

Bloss nicht! Es gehört zum guten Programmierstil (siehe sämtliche Werke zu dem Thema) Blöcke immer in begin end;, {} oder was auch immer zu setzen. Auch wenn es ohne genau so gut klappt und sicherlich einige Menschen anderer Ansicht sein dürften. Es hilft einfach genau zu sehen bis wohin ein Block geht, aber auch Fehler vermeiden. So mag es einem klar sein, dass nur die folgende Zeile abgearbeitet wird, aber wenn eine zweite Zeile hinzugefügt wird, kann man das Hinzufügen leicht vergessen (und bei schlechter Codeformatierung ist ohne begin end noch weniger klar wie lang der block geht).

Gut, jetzt ist es so eine Sache ob jmd. den Code schlecht formatiert, aber sich an begin und end hält, aber zu gutem Stil gehört beides.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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