Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeichen überprüfen (https://www.delphipraxis.net/69569-zeichen-ueberpruefen.html)

shadow24 17. Mai 2006 09:24


Zeichen überprüfen
 
Hallo
habe ein kleines problem bei dem ich nichtmehr weiter weiss.
Und zwar wollte ich bei einemprogramm eine überprüfung einbauen ob die erforderlichen zeichen vorhanden sind.Aber leider habe ich schon vieles versucht aber nicht hat bis jetzt die Lösung gebracht.
Vielleicht hat jemand eine idde oder Vorschläge wie ich das realisieren könnte wäre sehr nett.

mkinzler 17. Mai 2006 09:25

Re: Zeichen überprüfen
 
Pos, StrScan
Was willst du genau?

shadow24 17. Mai 2006 09:27

Re: Zeichen überprüfen
 
ich möchte gleichungen auf ihre korrektheit überprüfen also er soll sich die zeichen vor bestimmten variablen überprüfen ob sie korrekt sind,d.h für die gleichung zugelassen.
Aber hab im moment keine ahnung was machen soll denn habe schon so viel probiert

himitsu 17. Mai 2006 09:31

Re: Zeichen überprüfen
 
Mit Pos/PosEx die Variablen suchen und dann einfach das Zeichen davor prüfen.

Delphi-Quellcode:
i := Pos('a', S);
If (i > 1) and not (S[i - 1] in ['+', '-']) Then Fehler...
dat prüft z.B. ob vor dem ersten "a" ein "+", oder'n "-" ist ^^

shadow24 18. Mai 2006 10:33

Re: Zeichen überprüfen
 
und das funktioniert auch mit zahlen oder gilt das nur für zeichen ??

mquadrat 18. Mai 2006 10:37

Re: Zeichen überprüfen
 
In Strings gibt es keinen Unterschied zwischen Zahlunde und Zeichen...

shadow24 18. Mai 2006 10:40

Re: Zeichen überprüfen
 
also muss ich einfach
Delphi-Quellcode:
in ['1' ...]
eingeben und es müsste klappen ??

shadow24 18. Mai 2006 11:58

Re: Zeichen überprüfen
 
hmm habe es ausprobiert aber es will noch nicht so



Delphi-Quellcode:
{ alle zahlen enthalten ? }
{ 1 - true}
{ 0 - false}

function zahlenthalten(x:string;y:integer) : byte; // überprüfen au7f Sythax
var a,b,c,d,e,f,i : byte;

begin
if y = 2 then
  begin
    zahlenthalten := 0 ;
    a:=Pos('a',x);//position der Zeichen vor dem 'a'
    b:=Pos('b',x);//position der zeichen vor dem 'b'
  end;
 begin
 If (a > 1) and not (x[a - 1] in ['-',',','1','2','3','4','5','6','7','8','9','0'])
 Then showmessage ( 'Bitte 1.Gleichung Korrigieren')
 else zahlenthalten := 1;
 end;

 begin

   if (b > 1) and not (x[b - 1] in ['+',',','-','1','2','3','4','5','6','7','8','9','0'])
   then showmessage ('Bitte 2.Gleichung korrigieren')
   else zahlenthalten := 1;
 end;
end;
das ist der text zur überprüfung


und rufe später in einer anderen unit es wieder auf


Delphi-Quellcode:
gl1:=Edit1.Text;
gl2:=Edit2.Text;

{ Gleichungen umschreiben und in Array eintragen }
if ((varenthalten(gl1,2) = 1) and (zahlenthalten(gl1,2)= 1)) then
 gleich1(gl1,t[1,1],t[1,2],t[1,3])
else
  showmessage('Bitte korrigieren Sie die 1. Gleichung!');

if ((varenthalten(gl2,2) = 1) and (zahlenthalten(gl2,2) = 1 ) )then
  gleich1(gl2,t[2,1],t[2,2],t[2,3])
else
  showmessage('Bitte korigieren Sie die 2. Gleichung!');
nun jetzt weiss ich nicht wo ic heinen fehler habe


PS:
varenthalten ist eine funktion die läuft und überprüft ob die variablen enthalten sind.


bitte um hilfe
danke für bisher und schonmal im voraus ^^

himitsu 18. Mai 2006 12:35

Re: Zeichen überprüfen
 
Zitat:

{ 1 - true}
{ 0 - false}
Warum nicht gleich True und False?

Und was macht Y?
Außerdem ist a und b nicht definiert, wenn Y <> 2 ist ... da sollte eigentlich auch der Compiler meckern.

Zitat:

var a,b,c,d,e,f,i : byte;
und bei den vielen ungenutzten Variablen auch.

Ach ja, man kann es mit den begin/end's auch übertreiben ._.


Delphi-Quellcode:
function zahlenthalten(const x: string): Boolean; // überprüfen auf Sythax
var a,b: byte;

begin
  Result := Talse;
  a := Pos('a', x); // Position des Zeichen 'a'
  b := Pos('b', x); // Position des Zeichen 'b'
  If (a > 1) and not (x[a - 1] in ['-', ',', '0'..'9']) then
    showmessage('Bitte 1. Gleichung korrigieren')
  else Result := True;
  if (b > 1) and not (x[b - 1] in ['+', ',', '-', '0'..'0']) then
    showmessage('Bitte 2. Gleichung korrigieren')
  else Result := True;
end;
Delphi-Quellcode:
gl1:=Edit1.Text;
gl2:=Edit2.Text;

{ Gleichungen umschreiben und in Array eintragen }
if varenthalten(gl1) and zahlenthalten(gl1) then
 gleich1(gl1,t[1,1],t[1,2],t[1,3])
else
  showmessage('Bitte korrigieren Sie die 1. Gleichung!');

if varenthalten(gl2) and zahlenthalten(gl2) then
  gleich1(gl2,t[2,1],t[2,2],t[2,3})
else
  showmessage('Bitte korigieren Sie die 2. Gleichung!');

// PS: varenthalten ist auch mal auf Boolean umgestellt (in den Abfragen)
Das sieht ja schonmal gut aus, aber was läuft denn nicht?

shadow24 23. Mai 2006 11:45

Re: Zeichen überprüfen
 
naja wenn ic halles richtig eingebe meckert er auch rum das ich korrigieren müsste,aber weiss nicth wieso er das macht


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz