- Posts: 54
- Thank you received: 4
- Forum
- CodeTyphon Studio
- CodeTyphon Studio Components and Libraries
- Scripting Development
- TStringList
×
Components and Libraries for Scripting Development, discussions, problems and suggestions
Question TStringList
- Chris
-
Topic Author
- Offline
- Junior Member
-
Less
More
6 years 10 months ago #8007
by Chris
TStringList was created by Chris
Hi All
I'm trying to add a TStringList variable into a pascalscript - using the demo application in CodeOcean which supposedly has the classes register at compile and execution time I still see errors;
The program is trivial;
as above I get the compilation error;
Weird thing is I can register a variable as type TStringList externally (pre-compilation from within CT) and then use it and it's methods within pascalscript but I don't seem to be able to declare a new variable of this type within the script itself.
I'm presuming there's some registration method I need to call but the CodeOcean demo appears to have all the methods already registered.
Is there something I'm missing? I'm sure it used to work fine as I have a couple of old scripts that use TStringList variables and I wasn't aware they didn't work (I've tried CT4.5 and CT5.5 although they probably use the same version of pascalscript).
TheBlackSheep
I'm trying to add a TStringList variable into a pascalscript - using the demo application in CodeOcean which supposedly has the classes register at compile and execution time I still see errors;
The program is trivial;
program Test;
uses Classes;
var T:TStringList;
begin
T := StringList.Create;
T.Add('Test');
T.Free;
end.
as above I get the compilation error;
if I take out the uses clause I get;Compiling
Compiler: [Error] (3:6): Unknown identifier ''
Compiling failed
Compiling
Compiler: [Error] (3:7): Unknown type 'TStringList'
Compiling failed
Weird thing is I can register a variable as type TStringList externally (pre-compilation from within CT) and then use it and it's methods within pascalscript but I don't seem to be able to declare a new variable of this type within the script itself.
I'm presuming there's some registration method I need to call but the CodeOcean demo appears to have all the methods already registered.
Is there something I'm missing? I'm sure it used to work fine as I have a couple of old scripts that use TStringList variables and I wasn't aware they didn't work (I've tried CT4.5 and CT5.5 although they probably use the same version of pascalscript).
TheBlackSheep
Please Log in or Create an account to join the conversation.
- wilhelm
- Offline
- New Member
-
Less
More
- Posts: 5
- Thank you received: 0
6 years 10 months ago #8008
by wilhelm
Replied by wilhelm on topic TStringList
T := TStringList.Create;
Please Log in or Create an account to join the conversation.
- Chris
-
Topic Author
- Offline
- Junior Member
-
Less
More
- Posts: 54
- Thank you received: 4
6 years 10 months ago - 6 years 10 months ago #8010
by Chris
Replied by Chris on topic TStringList
ok - small typo, but it still doesn't work - tested on CT5.4 on Linux64 (Fedora), CT5.2 Win7 32bit, CT5.4, CT5.5 Win8.1 64bit - on all of these platforms I get the same results.
Basically I'm trying instantiate a TStringList from within a script...Is it possible and if so how? I'm using the CodeOcean TestApp application in the PascalScript samples folder.
The registration functionality appears to be in there (note, you do have to assign the ...Import events of the pascalscript component to the code that's in the Test App although I've tried calling these manually and you get the same result);
CompileImport;
ExecImport;
and the registration code for these functions calls the functions to register the TStringList (and all the other classes);
However when you do this and instantiate and use a TStringList variable you get a runtime 216 error/exception.
It looks like it should work, anyone any ideas?
Chris
Basically I'm trying instantiate a TStringList from within a script...Is it possible and if so how? I'm using the CodeOcean TestApp application in the PascalScript samples folder.
The registration functionality appears to be in there (note, you do have to assign the ...Import events of the pascalscript component to the code that's in the Test App although I've tried calling these manually and you get the same result);
CompileImport;
SIRegister_Std(x);
SIRegister_Classes(x, true);
...
ExecImport;
RIRegister_Std(x);
RIRegister_Classes(x, True);
...
and the registration code for these functions calls the functions to register the TStringList (and all the other classes);
...
RIRegisterTStrings(cl, Streams);
RIRegisterTStringList(cl);
...
However when you do this and instantiate and use a TStringList variable you get a runtime 216 error/exception.
It looks like it should work, anyone any ideas?
Chris
Last edit: 6 years 10 months ago by Chris. Reason: typo
Please Log in or Create an account to join the conversation.
- Chris
-
Topic Author
- Offline
- Junior Member
-
Less
More
- Posts: 54
- Thank you received: 4
6 years 10 months ago #8013
by Chris
Replied by Chris on topic TStringList
Also checked that the Classes unit does register and work ok in Delphi2007 - there are other issues with the registration of other units (forms, controls - drawevents specifically) but the Classes unit - strings, collections etc appears to work ok.
I've registered the ShowMessage function in the compile event and that works fine (testing a slimmed down version of the above) but as soon as it hits the class instantiation "T:= TStringList.Create;" it throws the exception; specifically in the CREATE$$OBJECT method;
program Test;
var T:TStringList;
begin
T := TSTringList.Create;
T.Add('1234');
ShowMessage(T.Text);
T.Free;
end.
I've registered the ShowMessage function in the compile event and that works fine (testing a slimmed down version of the above) but as soon as it hits the class instantiation "T:= TStringList.Create;" it throws the exception; specifically in the CREATE$$OBJECT method;
0040D166 7411 je 0x40d179 <SYSTEM$_$TOBJECT_$__$$_CREATE$$TOBJECT+89>
Please Log in or Create an account to join the conversation.