Autor Beitrag
Mrs. Sheep
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win Vista
Delphi 2005 PE, Lazarus 0.9.26
BeitragVerfasst: Do 12.03.09 18:27 
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
ausblenden Delphi-Quelltext
1:
2:
myWideString:=myString.ToArabic;
myOtherWideString:=myInt32.ToArabic;

Bei folgender Deifinition erhalte ich den Fehler "Klassentyp erwartet" (1)
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win Vista
Delphi 2005 PE, Lazarus 0.9.26
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
function StrToArabic(const S: String): WideString;
begin
  Result := { bla };
end;

Grüße,
Yogu
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 13.03.09 17:07 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
leider muss ich dich enttäuschen: Es gibt in Delphi keine Hilfsfunktionen à la C++.
Als was würdest du Class Helpers dann bezeichnen ;) ?

@user profile iconMrs. 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.

_________________
>λ=
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 13.03.09 17:14 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
leider muss ich dich enttäuschen: Es gibt in Delphi keine Hilfsfunktionen à la C++.
Als was würdest du Class Helpers dann bezeichnen ;) ?

@user profile iconMrs. Sheep: Das sieht nicht gerade nach Delphi.Win32 aus (Class Helpers gibt's bei beiden)

Sowas gibts in Delphi? Hab ich ehrlich gesagt noch nie gesehen. Aber Tatsache - es funktioniert. Heißt das dann, dass man einen String als Klasse definieren muss? Das halte ich in Punkten Performance für sehr fragwürdig :gruebel:
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 13.03.09 17:52 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
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
ausblenden Delphi-Quelltext
1:
myString.ToArabic					

wird im Compiler also wieder ein gewöhnliches
ausblenden Delphi-Quelltext
1:
TArabicHelper.ToArabic(myString)					

_________________
>λ=
Mrs. Sheep Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win Vista
Delphi 2005 PE, Lazarus 0.9.26
BeitragVerfasst: Fr 13.03.09 21:18 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:

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
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:

 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 15.03.09 18:33 
user profile iconMrs. Sheep hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:

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:
user profile iconMrs. Sheep hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconMrs. Sheep hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
>λ=