| Autor |
Beitrag |
Asgar
      
Beiträge: 160
XP Home Edition
D5
|
Verfasst: Mi 11.05.05 07:17
Hallo,
Ich hab ein Programm wo ich einzelne Buchstaben aus einer Datei auslese, und jetzt überprüfen will ob sie gültig sind. Als Zeichen sind nur a-z, A-Z und 0-9 erlaubt, wie überprüfe ich das jetzt? habs erst mit
if Buchstabe in [a..z] versucht, aber das funktionierte nicht weil das anscheinend nur mit char geht. Der ausgelesene buchstabe ist allerdings ein String.
Hoffe ihr könnt mir sagen wie ich weiterkomme.
Gruß
Daniel
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 11.05.05 07:23
Eine Möglichkeit:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure blabla; var Buchstabe : String; begin Buchstabe := 'A'; if Buchstabe[1] = ... end; |
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 11.05.05 07:26
Delphi-Quelltext
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Holgerwa
      
Beiträge: 325
WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
|
Verfasst: Mi 11.05.05 07:30
Hallo,
meinst Du so etwas?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure xyz; var s: string; i: integer; begin s := 'Das ist der String'; for i := 1 to Length (s) do if s[i] in ['a'..'z','A'..'Z','0'..'9'] then end; |
Holger
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Mi 11.05.05 07:32
Guten Morgen,
darf ich davon ausgehen, dass du diese Datei in einem String hast? Wenn nein, dann gehe ich in diesem Beispiel dennoch davon aus, und nenne diesen String csString.
Ich würde da folgendes machen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| niGrA := ord( 'A' ); niGrZ := ord( 'Z' ); niKlA := ord( 'a' ); niKlZ := ord( 'z' ); ni0 := ord( '0' ); ni9 := ord( '9' ); lbOK := true;
niI := length( csString )-1; for niI := 0 to niI do begin csBuchstabe := copy( csString, niI, 1 ); if ( ( ord( csBuchstabe ) >= niGrA ) and ( ord( csBuchstabe <= niGrZ ) ) or ( ( ord( csBuchstabe ) >= niKlA ) and ( ord( csBuchstabe <= niKlZ ) ) or ( ( ord( csBuchstabe ) >= ni0 ) and ( ord( csBuchstabe <= ni9 ) ) then else lbOK := false; application.processmessages; end;
if lbOK = false then begin end; |
Sollte es nicht funktionieren, dann bitte reklamieren. Ich habe es mir in fünf minuten vor der Arbeit zusammengekloppt. Testen konnte ich es nicht mehr.
Gruß, AS
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
Asgar 
      
Beiträge: 160
XP Home Edition
D5
|
Verfasst: Mi 11.05.05 07:36
ok, jetzt gehts bei mir, vielen Dank für die schnelle Antwort.
Gruß
Daniel
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Mi 11.05.05 21:08
naja der code geht auch kürtzer, Ich filter großbuchstaben bei einer verschlüsselung hiermit aus
Delphi-Quelltext 1: 2: 3:
| for i:=1 to length(orgtext) do if (ord(orgtext[i])<=90) and (ord(orgtext[i])>=65) then vertext:=vertext+orgtext[i]; |
für dich würds dann Delphi-Quelltext 1: 2: 3: 4: 5:
| for i:=1 to length(orgtext) do if (ord(orgtext[i])<=90) and (ord(orgtext[i])>=65) or (ord(orgtext[i])<=122) and (ord(orgtext[i])>=97) or (ord(orgtext[i])<=57) and (ord(orgtext[i])>=48) then vertext:=vertext+orgtext[i]; | sein
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
Zuletzt bearbeitet von crakos am Do 12.05.05 13:55, insgesamt 1-mal bearbeitet
|
|
Asgar 
      
Beiträge: 160
XP Home Edition
D5
|
Verfasst: Do 12.05.05 08:05
hab den Code von Holgerwa benutzt der is irgendwie am einfachsten und er funktioniert.
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Do 12.05.05 13:52
der code ist einfacher????????????
also welcher code einfacher ist, steht da wohl ausßer frage Oo
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 12.05.05 13:58
nur das dein code faslch ist weil
| Zitat: |
or (ord(orgtext[i])<=57) and (ord(orgtext[i])>=0) then
|
sind bestimmt nicht nur zahlen
EDIT: hast ja noch schnell geändert 
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
crakos
      
Beiträge: 195
D2k5 Pers
|
Verfasst: Do 12.05.05 14:07
ja das kommt davon wenn man im stress ist, denkt an die asci zahl von 0 will 48 schreiben und schreibt 0 ......
_________________ Das Ende der Menschheit ist der Anfang der Unendlichkeit.
|
|