AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur für jeden Buchstaben

Ein Thema von burn · begonnen am 5. Feb 2007 · letzter Beitrag vom 6. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
burn

Registriert seit: 9. Apr 2003
80 Beiträge
 
Delphi 5 Professional
 
#1

Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 12:49
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:
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;
Soweit so gut ... Nun würde ich gerne die Case-Anweisung weglassen und frage mich
ob so was überhaupt geht ...

In etwa würde ich das gerne so haben ...

Delphi-Quellcode:
for i:= 1 to length(Text) do
begin
  c := ord(Text[i]);
  RufeProzedurAuf('_' + IntToStr(c)); //Das geht leider nicht :-)
end;
Hat irgendwer ne Idee ??

Grüsse Steve
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 12:56
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 13:21
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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 13:23
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:
case i of
  1,3,7 : bla1;
  2,4,5,6 : bla2;
end;
Ansonsten ist es wirklich am einfachsten mit einem Array
der Methodenadressen.


Heiko
Heiko
  Mit Zitat antworten Zitat
passsy

Registriert seit: 1. Jan 2007
124 Beiträge
 
#5

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 13:59
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
Pascal
  Mit Zitat antworten Zitat
burn

Registriert seit: 9. Apr 2003
80 Beiträge
 
Delphi 5 Professional
 
#6

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 17:37
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 20:15
Zitat von burn:
Du schreibst " ... das müsste man noch umstellen"
Was und Wie müsste ich das noch umstellen...
Na auf Methoden... - dann funktioniert SirThomberry's Tipp.

Zitat von burn:
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)
Auf den Quelltext kommst du nunmal - so oder so. Und Array als Sprungtabelle nutzen wäre auch fast noch kleiner als deine Case Anweisung - und selbst wenn - lager sie doch in eine andere Unit aus...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Prozedur für jeden Buchstaben

  Alt 5. Feb 2007, 20:59
Hi Steve,

hier ist eine kleine technische Spielerei:

Delphi-Quellcode:
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;
Hast du dir eigentlich schon überlegt, wie du Sonderzeichen ('$', '(',...) behandeln möchtest?

Gruß Hawkeye
  Mit Zitat antworten Zitat
burn

Registriert seit: 9. Apr 2003
80 Beiträge
 
Delphi 5 Professional
 
#9

Re: Prozedur für jeden Buchstaben

  Alt 6. Feb 2007, 09:25
Hallo Hawkeye,

genau so funktioniert das ganze ... Die Sonderzeichen stellen kein Problem dar.

Delphi-Quellcode:
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;
Damit ist das Problem gelöst ...
Besten Dank nochmal an alle...

Grüsse Steve
  Mit Zitat antworten Zitat
smudo

Registriert seit: 6. Sep 2005
Ort: Cottbus
362 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Prozedur für jeden Buchstaben

  Alt 6. Feb 2007, 09:43
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é
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 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