![]() |
Wörter eingabe
Hi,
kann mir jemand helfen? Ich hab vor in ein Editfeld ein buchstabe wie "A" oder "B" ... einzugeben und dann kommt für a=1 für b=2 und so weiter. Nur was mir fehlt ist die Variable. Andersrum geht wenn ich ne Zhal eintrage das dann der Entsprechende Buchstabe kommt. Wenn wir schon dabei sind wie kann man z.b das so machen: Wenn ich einegebe in ein Editfeld: 12518 und dann ein Editfeld einzeigt "Du hast ABER geschrieben" Ist klar wie's geht? 1 steht für A,2 für B, 5 für E, 18 für R. Am besten wärs natürlich wenn mans so eingeben kann 1,2,5,18 Weil sonst könnte Delphi meinen es 1,2,5,1,8 und dann kommt ABEAH raus. So ich hoffe ihr habt mich verstanden. greetz Spider |
Re: Wörter eingabe
du könntest im 1.edit das wort, und in einem 2. edit die zahlen drinnenhaben
ins OnChange-Event des 1.Editfeldes einfach immer den ganzen text ab'testen':
Delphi-Quellcode:
ins OnChange-Event des 2.Editfeldes machst du das umgekehrte
edit2.Text := '';
for i := 1 to length(edit1.Text) do edit2.Text := edit2.Text + chr(edit1.Text[i])-65
Delphi-Quellcode:
müsste funzen, kanns nicht probieren
edit1.Text := '';
while pos(',', edit2.Text) > 0 do begin edit1.Text := edit1.Text + chr(StrToInt(copy(edit2.Text, 1, pos(',', edit2.Text) - 1)) + 65); edit2.Text := copy(edit2.Text, pos(',', edit2.Text)+1, length(edit2.Text) - pos(',', edit2.Text)-1); end; hoffe ich konnte dir helfen |
Re: Wörter eingabe
Ich würde dann generell alles mit Komma trennen.
Zum müsstest du zwei Listen/Array's erstellen. einen für die Buchstaben und einen für die Zahl Zum Array aufbau schau mal in der OH unter ARRAY oder Dynamische Array's SetLength Zum String zerlegen Pos, Copy, Delete, StrUtils und es gibt noch mehr. Diese zwei Array kann man dann durch eine Schleife (z.B. For ... to ... do ) ergänzen. Viel spaß beim Frimmeln |
Re: Wörter eingabe
Bei mir siehts jetzt so aus:
Delphi-Quellcode:
Jetzt gibbet ein neues Problem: Egal was ich ins Editfeld eingebe das Panel zeigt immer ein Z an auch wenn ich 1 oder 2 eingebe. Selbst wenn ich a oder b eingebe kommt z raus!
var
Form1: TForm1; a: array[1..26] of string; Eingabe, Nr : Integer; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin a[1] := 'A'; a[2] := 'B'; a[3] := 'C'; a[4] := 'D'; a[5] := 'E'; a[6] := 'F'; a[7] := 'G'; a[8] := 'H'; a[9] := 'I'; a[10] := 'J'; a[11] := 'K'; a[12] := 'L'; a[13] := 'M'; a[14] := 'N'; a[15] := 'O'; a[16] := 'P'; a[17] := 'Q'; a[18] := 'R'; a[19] := 'S'; a[20] := 'T'; a[21] := 'U'; a[22] := 'V'; a[23] := 'W'; a[24] := 'X'; a[25] := 'Y'; a[26] := 'Z'; end; procedure TForm1.Button1Click(Sender: TObject); begin For Nr := 1 to 26 do Panel1.caption:= a[nr]; end; Was muss ich den noch tun? |
Re: Wörter eingabe
Zitat:
|
Re: Wörter eingabe
Und was soll ich dann tun damit er bei 1 auch a angibt?
|
Re: Wörter eingabe
mh ehrlich gesagt versteh ich nicht wozu die Schleife da da ist, ich denke du willst die Umwandlugn erreichen, warum gehst du dein Array deswegen ganz durch?
Du kannst doch den Inhalt des Edits abfragen, dann nach jedem Komma die Zahl in einen zweiten Array speichern und denn dann durchgehen? oder nicht? Czapie. |
Re: Wörter eingabe
Im OnCreate der Form das a-Zeugs zu machen ist auch nicht so toll, oder? :wink:
Mach's doch so:
Code:
Gruß Matze
var a: array[1..26] of string =('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
|
Re: Wörter eingabe
Delphi-Quellcode:
Das hab ich ebend mal schnell zusammen genagelt. Nur grob getestet. Muß noch tüchtig viel optimiert werden. Aber es sollte ja blos eine Anregung sein.
implementation
{$R *.DFM} type TBezeichner = record a ,zahl: String[2]; end; var S : array[0..25] of TBezeichner; procedure TForm1.FormCreate(Sender: TObject); begin s[0].a := 'A'; s[0].zahl := '1'; s[1].a := 'B'; s[1].zahl := '2'; s[2].a := 'C'; s[2].zahl := '3'; s[3].a := 'D'; s[3].zahl := '4'; s[4].a := 'E'; s[4].zahl := '5'; s[5].a := 'F'; s[5].zahl := '6'; s[6].a := 'G'; s[6].zahl := '7'; s[7].a := 'H'; s[7].zahl := '8'; s[8].a := 'I'; s[8].zahl := '9'; s[9].a := 'J'; s[9].zahl := '10'; s[10].a := 'K'; s[10].zahl := '11'; s[11].a := 'L'; s[11].zahl := '12'; s[12].a := 'M'; s[12].zahl := '13'; s[13].a := 'N'; s[13].zahl := '14'; s[14].a := 'O'; s[14].zahl := '15'; s[15].a := 'P'; s[15].zahl := '16'; s[16].a := 'Q'; s[16].zahl := '17'; s[17].a := 'R'; s[17].zahl := '18'; s[18].a := 'S'; s[18].zahl := '19'; s[19].a := 'T'; s[19].zahl := '20'; s[20].a := 'U'; s[20].zahl := '21'; s[21].a := 'V'; s[21].zahl := '22'; s[22].a := 'W'; s[22].zahl := '23'; s[23].a := 'X'; s[23].zahl := '24'; s[24].a := 'Y'; s[24].zahl := '25'; s[25].a := 'Z'; s[25].zahl := '26'; end; function TForm1.isZahl(c: Char): Boolean; begin result := c in ['0'..'9'] end; function TForm1.isBuchstabe(c: Char): Boolean; begin result := c in ['A'..'Z','a'..'z'] end; procedure TForm1.Button1Click(Sender: TObject); var index,i : Integer; u : String; begin index := 0; i := 1; while i <= length(Edit1.Text) do begin u := Edit1.Text; if isBuchstabe(Edit1.Text[i]) then begin while index < 25 do begin if s[index].a = Edit1.Text[i] then begin insert(s[index].zahl, u,i); delete(u,i+1,1); Edit1.Text := u; index := 25; end else index := index+1; end; end else begin if isZahl(Edit1.Text[i]) then begin while index < 25 do begin if s[index].zahl = Edit1.Text[i] then begin // hier muss noch der Teil rein, der wenn eine Zahl gefunden eird ,den String nach //Kommas zerlegt; so wie es jetzt ist, geht es nur einstellig dafür aber hin- und her delete(u,i,1); insert(s[index].a, u,i); Edit1.Text := u; index := 25; end else index := index+1; end; end; end; index :=0; i:=i+1; end; end; end. [edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit] Danke Daniel. Ich gelobe Besserung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz