Toon posts:

[Delphi] Eigen variabele declareren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik had het idee om een eigen String type te maken (uiteraard compatible met String zelf) om daar m'n eigen methodes aan te kunnen hangen.

ff een voorbeeldje om het duidelijk te maken:

code:
1
2
3
4
5
6
7
8
var
  s: MyString;
Begin
  s := "hoi";
  s.UpperCase;            // zoiets dus...
  if (s.isNumber) then    // ...of dit...
   ...
End;

Ik heb al iets geprobeerd als:

code:
1
2
3
4
Type
  MyString = class of String
    ...
  End;

Maar een String is natuurlijk geen class dus dat werkte niet.
Dit werkt wel:

code:
1
2
Type
  MyString = type String;

Maarja.. daar kan je volgens mij geen procedures/functies aan hangen...

Op het moment gebruik ik gewoon een losse unit met de stringfuncties erin. Dat werkt natuurlijk ook best, maar het lijkt me veel makkelijker als Delphi met z'n code-completion schermpje komt, en dat je je functie er zo uit kan kiezen.. :9~ :9~ :9~

Is er iemand die hier iets voor weet?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Maak een classe die een String type bevat en delegeer daar sommige bewerkingen heen?
Verder moet je dan natuurlijk wel de := operator overloaden om een Stringtype aan te nemen en deze te wrappen in je datastructuur, mits mogelijk in Delphi

[ Voor 6% gewijzigd door Glimi op 13-02-2003 20:54 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 08:23

Tomatoman

Fulltime prutser

Wil je een nieuwe klasse declareren dan moet die direct of indirect afstammen van TObject. een string is geen TObject of TObject descendant, dus wat jij doet gaat nooit werken. Bovendien heeft class of een andere betekenis dan waarvoor jij hem probeert te gebruiken. Zoek voor meer informatie in de inhoudsopgave van Delphi help naar Object Pascal Reference en dan naar Classes and objects.

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
Ja, ik wist eigenlijk al dat dat descendant-van-string idee niet zou werken.. Maar toch proberen he... :P

Glimi: Goed idee..
Dit is het tot nu toe. Als je daar de overloading aan toe zou voegen, dan zou het volgens mij moeten werken...

code:
1
2
3
4
5
6
7
type
  MyString = class
  public
    Value: String;
    Procedure UpperCase;
    Function IsNumber: Boolean;
  End;


Maarja, hoe... Iemand die iets weet van operator overloading in Delphi?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:22

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 13 February 2003 @ 21:53:
Maarja, hoe... Iemand die iets weet van operator overloading in Delphi?
Ja ;)

Dat kan helaas niet in Delphi.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Creepy schreef op 13 February 2003 @ 21:58:
Ja ;)

Dat kan helaas niet in Delphi.

Dan kun je nog een constructor maken die een Stringtype accepteerd. Dan heb je feitelijk hetzelfde, maar dan zonder suiker :)

Verwijderd

Topicstarter
Hmmm... Wel jammer, zo zonder suiker... :)

C en Java kunnen het wel, maar O+ Delphietje O+ niet...
Misschien in een volgende versie...

Nou ja, in ieder geval iedereen bedankt voor de reply!

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 08:23

Tomatoman

Fulltime prutser

Gezien jouw computeromschrijving werk jij nog met Windows 3.11 en dus ook met Delphi 1. Daarin zit nog geen code completion en dus heb je die class die je wilt bouwen helemaal niet nodig :P

[ Voor 0% gewijzigd door Tomatoman op 14-02-2003 00:07 . Reden: tomatoman doelde hierop: 80286 - 10MHz passive cooled - 4 Mb - ISA VGA Graphics card - On-Bord speaker ]

Een goede grap mag vrienden kosten.


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Verwijderd schreef op 13 februari 2003 @ 22:36:
C en Java kunnen het wel, maar O+ Delphietje O+ niet...
Misschien in een volgende versie...

Sinds waarneer kent Java operator overloading?
en kom nou niet met nice aan :+

Verwijderd

Topicstarter
:D Was te proberen...

[ 8)7 modus]
Nou ja, ik heb nu wel Delphi 7 op mn 286...
OK, tijdens t compilen een beetje :O ...en die Win32-API he...
Die doet t niet op een of andere manier... Isser misschien een tweakertje die de oplossing weet? :+
[/ 8)7 modus]

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:22

Creepy

Tactical Espionage Splatterer

Glimi schreef op 13 February 2003 @ 22:16:

[...]

Dan kun je nog een constructor maken die een Stringtype accepteerd. Dan heb je feitelijk hetzelfde, maar dan zonder suiker :)
Tja... wie begon er nou over operator overloading?? :P

Er zijn overigens wel Pascal varianten die dit wel hebben (o.a. FreePascal).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • CyeZ
  • Registratie: September 2001
  • Laatst online: 08:09

CyeZ

Vroem vroem!!!

Creepy schreef op 14 februari 2003 @ 08:15:
[...]
Er zijn overigens wel Pascal varianten die dit wel hebben (o.a. FreePascal).
Ook in delphi is het tegenwoordig wel tot op zeker hoogte mogelijk dmv een TCustomVariantType afgeleide te maken volgens mij. Heb het zelf nog nooit gebruikt, maar dat is wat ik uit de help begrijp in ieder geval.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Idd. Het kan tot op zekere hoogte met een Custom Variant vanaf D6. Maar over het algemeen vind de Delphi community operator overloading a bad thing. De vraag is dan ook of je dit moet gaan nastreven in een taal die dat liever niet heeft. Gebruik dan liever een taal die het wel kan of methodes in Delphi wat wel gebruikelijk is. Het is

We adore chaos because we like to restore order - M.C. Escher

Pagina: 1