Analyse von einem Edit Feld
Hallo
ich versuche ein Programm zuschreiben, das die im Edit Feld eingegebene Zeichenfolge analysiert, bzw jede Stelle Edit1.Text[i] in eine Zahl umwandelt und sie in er Varibale speichert... So soll, falls zB Edit1.Text[5] ein D ist die Variable t5 den Wert 4 haben usw. Das Problem ist, dass Delphi erstmal schon bei A,a B,b usw rummeckert und ich weiß auch nicht, ob das t[i] funktioniert. Hat einer eine Idee, wie dies Funktionieren kann? Mein nicht funktionirender Ansatz :gruebel: :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); begin for i:=1 to 20 do begin case Edit1.Text[i] of A,a: t[i] := 1; B,b: t[i] := 2; C,c: t[i] := 3; D,d: t[i] := 4; E,e: t[i] := 5; F,f: t[i] := 6; G,g: t[i] := 7; H,h: t[i] := 8; I,i: t[i] := 9; J,j: t[i] := 10; K,k: t[i] := 11; L,l: t[i] := 12; M,m: t[i] := 13; N,n: t[i] := 14; O,o: t[i] := 15; P,p: t[i] := 16; Q,q: t[i] := 17; R,r: t[i] := 18; S,s: t[i] := 19; T,t: t[i] := 20; U,u: t[i] := 21; V,v: t[i] := 22; W,w: t[i] := 23; X,x: t[i] := 24; Y,y: t[i] := 25; Z,z: t[i] := 26; end; end; end; Thx4Help Bassel |
Re: Analyse von einem Edit Feld
Du könntest statt des case die Zahl aus dem ASCII-Code berechnen:
Delphi-Quellcode:
if Edit.Text[i] in 'A..Z' then
begin t[i] := ord(Edit.Text[i]-48); end; if Edit.Text[i] in 'a..z' then begin t[i] := ord(Edit.Text[i]-95); end; |
Re: Analyse von einem Edit Feld
Als erstes würde ich darauf achten, dass wirklich nur die Textlänge genommen wird (könnte ja auch kürzer sein). Dazu kannst du Length() verwenden.
Dein Problem hier ist, dass die einzelnen Zeichen vom Typ Char sind. Auch ein Char muss, wie ein String, in Hochkommas gesetzt werden:
Delphi-Quellcode:
ansonsten würde ich es auch, wie mkinzler vorgeschlagen hat, über den ASCII-Code machen, aber gleich so (da du ja nicht nach Groß-/Kleinbuchstaben unterscheidest):
for i:=1 to Length(Edit1.Text) do begin
case Edit1.Text[i] of 'A', 'a': t[i] := 1; ... 'Z', 'z': t[i] := 26;
Delphi-Quellcode:
t[i] := Ord(UpperCase(Edit.Text[i]) - 48);
|
Re: Analyse von einem Edit Feld
Hallo,
besser so:
Delphi-Quellcode:
Ein weiterer Optimierungsansatz wäre, den Inhalt des Edit-Controls in einer lokalen Stringvariablen zwischenzuspeichern und diese auszuwerten.
t[i] := Ord(UpCase(Edit.Text[i])) - Ord('A') + 1;
Gruß Hawkeye |
Re: Analyse von einem Edit Feld
okay das probier ich mal....
Vielen Dank Bassel |
Re: Analyse von einem Edit Feld
hmmm jedes mal, bei jeder Variante sagt Delphie bei t[i], dass ein Array-Typ erforderlich ist.
woran liegt das? Bassel |
Re: Analyse von einem Edit Feld
ist t kein Array? dann mach einen draus
|
Re: Analyse von einem Edit Feld
Weil die Schreibweise t[i] bei Arrays benutzt wird ;)
|
Re: Analyse von einem Edit Feld
ahh ich nap :wall: :wall:
nja ich hatte noch nichts mit arrays zu tun.... :mrgreen: :mrgreen: ich hab ein riesig fettes Buch da findet man ziemlich viel, aber nicht alles.... und es beantwortet nicht gezeilt fragen ^^ naja dann programmier ich mal weiter :coder: :dancer: :dancer: :dancer: Vielen dank Bassel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 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