Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Analyse von einem Edit Feld (https://www.delphipraxis.net/94080-analyse-von-einem-edit-feld.html)

Bassel 15. Jun 2007 17:42


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

mkinzler 15. Jun 2007 17:49

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;

ManuMF 15. Jun 2007 17:56

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:
 for i:=1 to Length(Edit1.Text) do begin
  case Edit1.Text[i] of
   'A', 'a': t[i] := 1;
    ...
   'Z', 'z': t[i] := 26;
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):
Delphi-Quellcode:
t[i] := Ord(UpperCase(Edit.Text[i]) - 48);

Hawkeye219 15. Jun 2007 18:16

Re: Analyse von einem Edit Feld
 
Hallo,

besser so:

Delphi-Quellcode:
t[i] := Ord(UpCase(Edit.Text[i])) - Ord('A') + 1;
Ein weiterer Optimierungsansatz wäre, den Inhalt des Edit-Controls in einer lokalen Stringvariablen zwischenzuspeichern und diese auszuwerten.

Gruß Hawkeye

Bassel 15. Jun 2007 18:17

Re: Analyse von einem Edit Feld
 
okay das probier ich mal....

Vielen Dank

Bassel

Bassel 15. Jun 2007 18:28

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

mkinzler 15. Jun 2007 18:30

Re: Analyse von einem Edit Feld
 
ist t kein Array? dann mach einen draus

DeddyH 15. Jun 2007 18:31

Re: Analyse von einem Edit Feld
 
Weil die Schreibweise t[i] bei Arrays benutzt wird ;)

Bassel 15. Jun 2007 18:51

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