Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pascal Script: Delphi Functionen nutzen (https://www.delphipraxis.net/58371-pascal-script-delphi-functionen-nutzen.html)

DieHardMan 6. Dez 2005 08:28


Pascal Script: Delphi Functionen nutzen
 
Hi, möchte gern die beiden Stringfunktionen StringReplace und PosEx in Pascal Script hinzufügen, aber irgendwie klappt das nicht. Habe folgendes versucht:

Delphi-Quellcode:
function ExStringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
begin
  StringReplace(S, OldPattern, NewPattern, Flags);
end;

procedure TfrmMain.ceCompile(Sender: TPSScript);
begin
  Sender.AddFunction(@ExStringReplace,
                   'function ExStringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;');
end;
Klappt aber nicht, da kommt folgende Exception:
raised exception, unable to register function function ExStringReplace...

Angel4585 6. Dez 2005 09:03

Re: Pascal Script: Delphi Functionen nutzen
 
1.versuch das mal ohne "const" bei deinen Parametern

2. versuch anstatt
Delphi-Quellcode:
x,y,z : string
mal
Delphi-Quellcode:
x : string;y : string;z : string
3. versuch dir Function als public bei TFrmMain zu deklarieren und als ersten Parameter dann Self anzugeben.

shmia 6. Dez 2005 09:05

Re: Pascal Script: Delphi Functionen nutzen
 
StringReplace hat einen Returnwert:
Delphi-Quellcode:
function ExStringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
begin
  Result := StringReplace(S, OldPattern, NewPattern, Flags);
end;

Angel4585 6. Dez 2005 09:13

Re: Pascal Script: Delphi Functionen nutzen
 
:wall:

Warum hab ich das nicht gleich gesehen...
meines Wissens akzeptiert Pascal Script nur "gewöhnliche" Datentypen (String, Integer, usw.) und nicht sowas wie TReplaceFlags

Edit: heisst soviel wie das es nicht geht, da PS den Typ nicht kennt und somit nicht importieren kann.

jim_raynor 6. Dez 2005 09:17

Re: Pascal Script: Delphi Functionen nutzen
 
Du musst vorher mit Sender.AddType TReplaceFlag und TReplaceFlags registrieren ;)

Delphi-Quellcode:
Sender.AddType('TReplaceFlag = (rfReplaceAll,rfIgnoreCase);');
Sender.AddType('TReplaceFlags = set of TReplaceFlag');
(ungetestet)

Eventuell heisst es nicht AddType sonder AddTypeS oder so und eventuell ist die Reihenfolge bei TReplaceFlag falschrum. Aber ansich klappt es. Man muss nur die Typen vorher bekannt machen.

DieHardMan 6. Dez 2005 09:32

Re: Pascal Script: Delphi Functionen nutzen
 
Delphi-Quellcode:
  Sender.Comp.AddTypes('TReplaceFlag', '(rfReplaceAll,rfIgnoreCase);');
  Sender.Comp.AddTypes('TReplaceFlags', 'set of TReplaceFlag');
ist korrekt. Danke für die Antworten.

Angel4585 6. Dez 2005 10:37

Re: Pascal Script: Delphi Functionen nutzen
 
gehts jetzt?

DieHardMan 6. Dez 2005 12:15

Re: Pascal Script: Delphi Functionen nutzen
 
Jojo geht, das Result hat natürlich auch noch gefehlt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 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