[Back to DATATYPE SWAG index] [Back to Main SWAG index] [Original]
{
|³-> You can allocate some memory and put all your parameters there, then
|³-> pass a pointer which points to this memory block. You have to
|³-> setup some convention if you want to pass different types, or
|³-> parameters with different length.
|³
|³Well how do I do that in Pascal- I really think that I might be better
|³off making the function in C and then compiling it out to an object file
|³and then linking it into pascal
Mixed language programming is tricky and difficult unless the
compilers explicitely support it.
|³but I am not sure that that will even
|³work I might just abandon Pascal and learn C
Good luck! <evil grin>
|³(even though the SYNTAX rules for C are based on Pascal anyhow)
^^^^^^^^^^^^^^^
Hmmmm.....
Anyway, here's a quick and dirty example (untested) about passing
pointers and variable # of parameters.
}
PROGRAM Pass_Pointer; {Compiled with TP _3.01A_}
TYPE
Short_String = STRING[15];
CONST
max_count = 13;
terminator : Short_String = #0#0#0#0#0#0#0#0#0#0#0#0#0#0#0;
TYPE
String_Array = ARRAY [0..max_count] OF Short_String;
Pointer = ^String_Array;
VAR
star : Pointer;
sstr : Short_String;
count, i : INTEGER;
PROCEDURE Receiver (P : pointer);
BEGIN
i := 0;
WHILE (P^[i] <> terminator) AND (i < max_count) DO BEGIN
writeln(P^[i]);
i := i + 1;
END;
END;
BEGIN
count := 0;
New (star);
REPEAT
write('Enter a short string: ');
readln(sstr);
star^[count] := sstr;
count := count + 1;
UNTIL (sstr = '') OR (count >= max_count);
IF count < max_count THEN
star^[count - 1] := terminator;
Receiver(star);
END.
[Back to DATATYPE SWAG index] [Back to Main SWAG index] [Original]