Prozedur für jeden Buchstaben
Hallo allerseits,
ich muss für jeden Buchstaben/Zahl auf der Tastatur eine Prozedur ausführen. Das ganze soll dann in etwa folgendermassen aussehen. Ich habe einen Text z.B. "Dies ist ein Text" Nun durchlaufe ich den String und lass für jedes Zeichen eine Prozedur ausführen.
Delphi-Quellcode:
Soweit so gut ... Nun würde ich gerne die Case-Anweisung weglassen und frage mich
procedure _49;
begin bla end; procedure _50; begin bla end; for i:= 1 to length(Text) do begin c := ord(Text[i]); case c of 49 : _49; 50 : _50; end; end; ob so was überhaupt geht ... In etwa würde ich das gerne so haben ...
Delphi-Quellcode:
Hat irgendwer ne Idee ??
for i:= 1 to length(Text) do
begin c := ord(Text[i]); RufeProzedurAuf('_' + IntToStr(c)); //Das geht leider nicht :-) end; Grüsse Steve |
Re: Prozedur für jeden Buchstaben
die Methode "MethodAddress" sollte dir da helfen. Damit bekommst du die Adresse und kannst diese dann auf deinen Methodentyp casten so das du für alle Zeischen das ganze hinn bekommst.
|
Re: Prozedur für jeden Buchstaben
Er hat keine Methoden - das müsste er noch umstellen.
Ansonsten würde ich ein konstantes Array anlegen mit dem Zeichen und der entsprechenden Procedure. |
Re: Prozedur für jeden Buchstaben
Hallo,
muss wirklich zu jedem Buchstaben eine gesonderte Procedure aufgerufen werden oder nur für ein paar Buchstaben wirklich was gaaanz anderes. Das Case kann man auch so verwenden
Delphi-Quellcode:
Ansonsten ist es wirklich am einfachsten mit einem Array
case i of
1,3,7 : bla1; 2,4,5,6 : bla2; end; der Methodenadressen. Heiko |
Re: Prozedur für jeden Buchstaben
was müssen den die Proceduren machen? vll kann man das auch vereinfachen. sonst musst du 26x2+(öäü)x2+(die ganzen sonderzeichen)x2 prozeduren machen. wenns dir spaß macht ;)
|
Re: Prozedur für jeden Buchstaben
So .. da bin ich wieder
@ SirThornberry Leider funktioniert das nicht weil ich, wie Muetze1 schreibt, keine Methoden habe .. @ Muetze1 Du schreibst " ... das müsste man noch umstellen" Was und Wie müsste ich das noch umstellen... Ein konstantes Array bringt mich da auch nicht weiter, weil ich nicht so viel Quelltext haben wollte. Sonst könnt ich ja auch die Case-Anweisung lassen. (kommt vom Platz fast aufs selbe raus) @ hoika Diese Case-Anweisung bringt nichts ... Ich muss definitiv für jedes Zeichen (!) eine procedure haben. @ passy Ich will grob gesagt meine eigene Schrift zeichnen lassen. Und da muss ja nun mal jedes Zeichen anders aussehen. (eine 1 wie eine 1 und ein a wie ein a und ein A wie ein A usw...) für weitere Tipps wäre ich dankbar... Grüsse Steve |
Re: Prozedur für jeden Buchstaben
Zitat:
Zitat:
|
Re: Prozedur für jeden Buchstaben
Hi Steve,
hier ist eine kleine technische Spielerei:
Delphi-Quellcode:
Hast du dir eigentlich schon überlegt, wie du Sonderzeichen ('$', '(',...) behandeln möchtest?
procedure A;
begin ShowMessage ('A'); end; procedure B; begin ShowMessage ('B'); end; procedure C; begin ShowMessage ('C'); end; exports A, B, C; procedure TForm1.Button1Click(Sender: TObject); var proc : procedure; begin proc := GetProcAddress(HInstance, PChar(Edit1.Text)); if Assigned(proc) then proc else ShowMessage ('Prozedur "' + Edit1.Text + '" existiert nicht!'); end; Gruß Hawkeye |
Re: Prozedur für jeden Buchstaben
Hallo Hawkeye,
genau so funktioniert das ganze ... Die Sonderzeichen stellen kein Problem dar.
Delphi-Quellcode:
Damit ist das Problem gelöst ...
procedure _41;
begin showMessage(')'); end; exports _41; procedure TForm1.Button1Click(Sender: TObject); var proc : procedure; c : Integer; begin c := ord(')'); proc := GetProcAddress(HInstance, PChar('_' + IntToStr(c))); if Assigned(proc) then proc else ShowMessage ('Prozedur für ")" existiert nicht!'); end; Besten Dank nochmal an alle... Grüsse Steve |
Re: Prozedur für jeden Buchstaben
Ich halte es für wenig sinnvoll, für jedes Zeichen eine separate Prozedur zu schreiben.
Es wird doch sicher einige Schritte geben, welche in allen Prozeduren gleich wäre. Deshalb wäre es auch besser, das gesamte Verfahren mit einer Prozedur zu lösen. Du musst doch sowieso für jedes Zeichen den Quellcode einer gesamten Prozedur aufbauen. Ich denke, die Lösung mit nur einer Prozedur wäre sparsamer (zum tippen), hätte weniger Redundanz und wäre übersichtlicher. René |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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