Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Helper Class für Integer/String
Mrs. Sheep - Do 12.03.09 18:27
Titel: Helper Class für Integer/String
Ist es möglich dem Int32 / String Prozeduren hinzuzufügen, wie zB die .ToString Methode?
Es geht mir darum, Strings und Zahlen in der arabischen Schrift darzustellen. Den Code habe ich (mehr oder weniger) komplett. Also dann zum Beispiel
Delphi-Quelltext
1: 2:
| myWideString:=myString.ToArabic; myOtherWideString:=myInt32.ToArabic; |
Bei folgender Deifinition erhalte ich den Fehler "Klassentyp erwartet" (1)
Delphi-Quelltext
1: 2: 3: 4:
| TYPE CArabic = CLASS HELPER FOR System.Int32 END; TYPE CArabic = CLASS HELPER FOR TWinForm1 END; |
(3) funktioniert;
Kennt irgendjemand einen Weg das zu implementieren?
Mrs. Sheep - Fr 13.03.09 15:17
Ich habe ein bisschen rumgespielt, und kam darauf das TOBJECT die Lösung seien müsste.
Nächster Punkt wäre dann: Wie sage ich TObject das ich das Objekt von dem ich die Prozedur aufrufe als Paramter brauche?
Yogu - Fr 13.03.09 16:10
Hallo,
leider muss ich dich enttäuschen: Es gibt in Delphi keine Hilfsfunktionen à la C++. Stattdessen wird durch normale Funktionen umgewandelt:
Delphi-Quelltext
1: 2: 3: 4:
| function StrToArabic(const S: String): WideString; begin Result := ; end; |
Grüße,
Yogu
Kha - Fr 13.03.09 17:07
Yogu hat folgendes geschrieben : |
| leider muss ich dich enttäuschen: Es gibt in Delphi keine Hilfsfunktionen à la C++. |
Als was würdest du Class Helpers dann bezeichnen ;) ?
@
Mrs. Sheep: Das sieht nicht gerade nach Delphi.Win32 aus (Class Helpers gibt's bei beiden), sondern eher nach dem toten Delphi.NET. Mit dessen Nachfolger, Delphi Prism, ist das kein Problem:
Extension Methods [
http://prismwiki.codegear.com/en/Extension_Methods_(Writing)].
Kha - Fr 13.03.09 17:52
Yogu hat folgendes geschrieben : |
| Heißt das dann, dass man einen String als Klasse definieren muss? Das halte ich in Punkten Performance für sehr fragwürdig :gruebel: |
(Abgesehen davon, dass es 90% der genutzten Programmiersprachen genau so machen:) Was wäre daran schlecht? String ist schon ein Referenztyp, außer einem kleinen zusätzlichen Pointer zu den Metadaten dürfte die Umwandlung in eine Klasse nicht viel Overhead mit sich bringen - das wäre es allemal wert. Gut, Delphis automagische Referenzzählung und Klonung von Strings müsste dann vielleicht anders gelöst werden.
Nötig ist das ganze allerdings nicht ;) , Class Helpers/Extension Methods sind reiner Syntax Sugar. Aus
wird im Compiler also wieder ein gewöhnliches
Delphi-Quelltext
1:
| TArabicHelper.ToArabic(myString) |
Mrs. Sheep - Fr 13.03.09 21:18
Kha hat folgendes geschrieben : |
Nötig ist das ganze allerdings nicht ;) |
So wirklich NÖTIG ist nichts von dem was ich programmiere außerdem:
eine Multiplikation kann man auch durch ausschreiben der Faktoren erreichen,
die Multiplikation ist trotzdem schöner.
Um zum Problem zurückzukommen: Wie definiere ich den Spaß für
Kha hat folgendes geschrieben : |
myString.ToArabic |
??
Und wegen "das tote Delphi .NET" : Delphi 2005 .NET PE -> Kostenlos!
Mehr interessiert mich als Legaler(naja)-Hobbyprogrammierer nicht;
wenn ich nicht bei FreePascal und Konsolen-Anwendung oder dem verbuggten Lazarus bleiben will.
Kha - So 15.03.09 18:33
Mrs. Sheep hat folgendes geschrieben : |
Kha hat folgendes geschrieben : |
Nötig ist das ganze allerdings nicht ;) |
So wirklich NÖTIG ist nichts von dem was ich programmiere |
Das war noch auf Yogus Frage, ob String dann nicht eine Klasse werden müsste, bezogen :oops: .
BTT:
Mrs. Sheep hat folgendes geschrieben : |
| Nächster Punkt wäre dann: Wie sage ich TObject das ich das Objekt von dem ich die Prozedur aufrufe als Paramter brauche? |
In der Class-Helper-Funktion zeigt Self wie in einer gewöhnlichen Methode auf das aufrufende Objekt.
Mrs. Sheep hat folgendes geschrieben : |
| Und wegen "das tote Delphi .NET" : Delphi 2005 .NET PE -> Kostenlos! |
Wenn schon kostenlos, dann bitte Turbo Explorer Delphi.Win32. Delphi.NET
ist war einfach nix Halbes und nix Ganzes.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!