AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid durchsuchen klappt nicht

Ein Thema von Peter_Cottbus · begonnen am 2. Mär 2007 · letzter Beitrag vom 3. Mär 2007
Antwort Antwort
Peter_Cottbus

Registriert seit: 19. Feb 2007
7 Beiträge
 
#1

Stringgrid durchsuchen klappt nicht

  Alt 2. Mär 2007, 11:59
folgendes Problem.

Ich will einen Stringgrid durchsuchen, dessen Inhalte auseinander nehmen und auf standardtisierte Eingabe überprüfen.

Da es sich um eine Turingtafel handelt, muss die eingabe x, zy, u entsprechen, was x, z, y und u sind, seht ihr ja im Programm.

Problem dabei: es funktioniert einfach nicht, und ich hab partout keine Ahnung wo mein problem liegt.

Fehlermeldungen liegen insofern vor, dass er als falsch ansieht was eigentlich richtig ist.

der text:

Delphi-Quellcode:
for i:=1 to (StrToInt(edit1.text)) do
 begin
 for j:=1 to 3 do
  begin
  ts:=copy(stringgrid1.cells[i,j],0,1);
IF NOT (ts='x') OR (ts='X') OR (ts='0') OR (ts='1')
 then
  begin
   showmessage('Die Eingabe "'+stringgrid1.Cells[i,j]+'" ist nicht regelkonform. Bitte überarbeiten.');
   korrekt:=false;
  end;
  ts:=copy(stringgrid1.cells[i,j],3,1);
IF NOT ((ts='z') OR (ts='Z')) AND (korrekt=true)
 then
  begin
   showmessage('Die Eingabe "'+stringgrid1.Cells[i,j]+'" ist nicht regelkonform. Bitte überarbeiten.');
   korrekt:=false;
  end;
  ts:=copy(stringgrid1.cells[i,j],4,1);
IF NOT ((ts='0') OR (ts='1') OR (ts='2') OR (ts='3') OR (ts='4') OR (ts='5') OR (ts='6') OR (ts='7') OR (ts='8') OR (ts='9')) AND (korrekt=true)
 then
  begin
   showmessage('Die Eingabe "'+stringgrid1.Cells[i,j]+'" ist nicht regelkonform. Bitte überarbeiten.');
   korrekt:=false;
  end;
  ts:=copy(stringgrid1.cells[i,j],6,1);
IF NOT ((ts='R') OR (ts='r') OR (ts='N') OR (ts='n') OR (ts='L') OR (ts='l')) AND (korrekt=true)
 then
  begin
   showmessage('Die Eingabe "'+stringgrid1.Cells[i,j]+'" ist nicht regelkonform. Bitte überarbeiten.');
   korrekt:=false;
  end;
  end;
 end;
Danke für die Hilfe, tipps reichen auch...
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: Stringgrid durchsuchen klappt nicht

  Alt 2. Mär 2007, 12:15
erklär doch mal bitte regelkonforme eingaben!
  Mit Zitat antworten Zitat
AMD_prozessor

Registriert seit: 1. Apr 2006
9 Beiträge
 
#3

Re: Stringgrid durchsuchen klappt nicht

  Alt 2. Mär 2007, 12:22
Also Ich würde ja dafür nen Parser schreiben, der die richtigen Eingaben vorher prüft und nur, wenn richtig, in die Tabelle einträgt. Du könntest auch ein TMaskEdit nehmen und dort ne passende Eingabemaske vorgeben. Dann sparst Du Dir den Parser.
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Stringgrid durchsuchen klappt nicht

  Alt 2. Mär 2007, 12:39
Hallo Peter_Cottbus - Grüße aus Cottbus nach Cottbus

Ich hab zwar noch nicht den Fehler gesehen, aber eine ganze Menge Optimierungsmöglichkeiten.
Z.B. kannst du statt copy(stringgrid1.cells[i,j],3,1) kannst du auch direkt auf das Zeichen im String zugreifen mit stringgrid1.cells[i,j][1]
Wenn du statt String Char verwendest, kannst du mit Sets arbeiten (Beispiel ts in ['1', '2', '3' ..])
Wenn du gleich den String auf Großschreibung setzt (Uppercase) sparst du dir die doppelte Abfrage (x und X, r und R usw.)

Und wie schon geschrieben: Mach den Check gleich beim reinschreiben ins Grid

René
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: Stringgrid durchsuchen klappt nicht

  Alt 2. Mär 2007, 13:38
also du prüfst die stellen 0,3,4,6 des strings ab?

die stelle 0 ist schon mal verkehrt! dass muss schon die 1 sein, da an stelle 0 die länge des strings steht!

nach deinem obigen code ist folgendes erlaubt...

stelle 0 (eigentlich 1) nur die Eingabe 'x'
stelle 3 alles ausser 'z','Z'
stelle 4 alles ausser zahlen
stelle 6 alles ausser 'R','r','N','n','L','l'

ist das richtig so?

wann wird korrekt=true gesetzt???
  Mit Zitat antworten Zitat
Peter_Cottbus

Registriert seit: 19. Feb 2007
7 Beiträge
 
#6

Re: Stringgrid durchsuchen klappt nicht

  Alt 3. Mär 2007, 15:35
Also erstmal danke für die Hilfe

Korrekt wird vor dieser ganzen Prozedur des Überprüfens auf True gesetzt und sollte sich folglich nie verändern, wenn keiner der Fehler auftaucht.

Den Stringgrid während der Eingabe zu überprüfen lass ich, weil es so gewollt ist, dass die Überprüfung erst bei Druck auf einen Button geschieht.

Zitat:
die stelle 0 ist schon mal verkehrt! dass muss schon die 1 sein, da an stelle 0 die länge des strings steht!
Das verwundert mich jetzt... denn wenn ich z.B. "copy(stringgrid1.cells[i,j],0,1)" in einem Editfeld anzeigen lasse, erscheint in meinem Fall wirklich das erste Zeichen der Zelle... wenn ich 1,1 mache, dann das zweite.

Mir geht es jetzt ehrlich gesagt auch nicht darum das zu optimieren, mehr ging es mir darum auf eigene Weise und mit den bisherigen Grundkenntnissen die ich hab, so eine Prozedur zu schreiben. Wie immer folgt dann jedoch, dass die Prozedur theoretisch richtig ist, aber praktisch einfach nicht funktioniert, und ich weiß leider immernoch nicht warum. ^^

@ibp: Nein das ist nicht korrekt. ^^ Theoretisch sollte er etwas als falsch markieren, wenn er in den Zellen NICHT diese Inhalte findet. Also ist nicht alles erlaubt AUßER z, Z usw... sondern eben nur diese Zeichen.

Wenn der Fehler wirklich nirgends wirklich zu finden ist, werd ich mir mal so eine Eingabemasken-Eingabe mal anschauen und aneignen, aber vielleicht sieht ja trotzdem noch jemand den winzigen Fehler, der irgendwo liegt. Ich versteh halt nicht warum das theoretisch eigentlich funktionieren müsste, aber praktisch eben nicht taugt. ^^

Danke weiterhin die Hilfe, sehr nette Community hier. (Grüße an alle Cottbuser übrigens ^^)
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Stringgrid durchsuchen klappt nicht

  Alt 3. Mär 2007, 15:45
Zeile 6 deines Codeschnipsels:
IF NOT (ts='x') OR (ts='X') OR (ts='0') OR (ts='1') Das heißt übersetzt:
Sobald ts nicht 'x' ist, ist die Eingabe nicht regelkonform.

Das meintest du bestimmt nicht so, oder?
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Stringgrid durchsuchen klappt nicht

  Alt 3. Mär 2007, 16:14
Hi, ich denke er meint

IF NOT ( (ts='x') OR (ts='X') OR (ts='0') OR (ts='1') ) then da fehlen die äusseren Klammern.

oder auch wenn ts ein char wäre
if NOT ts in ['x','X','0','1'] then Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Peter_Cottbus

Registriert seit: 19. Feb 2007
7 Beiträge
 
#9

Re: Stringgrid durchsuchen klappt nicht

  Alt 3. Mär 2007, 17:08
Ich danke euch vielmals.

Es lag tatsächlich daran, dass ich einfach mal bei dieser einen Abfrage die Gesamt-Klammern vergessen hab.

Sorry für den vielen Aufwand und vielen dank nochmal.
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Stringgrid durchsuchen klappt nicht

  Alt 3. Mär 2007, 17:41
Zitat von Peter_Cottbus:
Es lag tatsächlich daran, dass ich einfach mal bei dieser einen Abfrage die Gesamt-Klammern vergessen hab.
... was du schon gestern, 14:38h hättest merken können:

Zitat von ibp:
nach deinem obigen code ist folgendes erlaubt...

stelle 0 (eigentlich 1) nur die Eingabe 'x'
stelle 3 alles ausser 'z','Z'
stelle 4 alles ausser zahlen
stelle 6 alles ausser 'R','r','N','n','L','l'

ist das richtig so?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.
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