diff options
Diffstat (limited to 'tests/projects/pascal/shared/src')
| -rw-r--r-- | tests/projects/pascal/shared/src/foo.pas | 24 | ||||
| -rw-r--r-- | tests/projects/pascal/shared/src/main.pas | 15 |
2 files changed, 17 insertions, 22 deletions
diff --git a/tests/projects/pascal/shared/src/foo.pas b/tests/projects/pascal/shared/src/foo.pas index d1952cf21..788950f46 100644 --- a/tests/projects/pascal/shared/src/foo.pas +++ b/tests/projects/pascal/shared/src/foo.pas @@ -1,23 +1,19 @@ library foo; -function SubStr(CString: PChar;FromPos,ToPos: Longint): PChar; cdecl; - -var - Length: Integer; +{$mode objfpc}{$H+} +function fib(n : Int64) : Int64; cdecl; begin - Length := StrLen(CString); - SubStr := CString + Length; - if (FromPos > 0) and (ToPos >= FromPos) then + if n > 1 then begin - if Length >= FromPos then - SubStr := CString + FromPos; - if Length > ToPos then - CString[ToPos+1] := #0; - end; + Result := fib(n - 1) + fib(n - 2); + end + else + Result := 1; end; exports - SubStr; - + fib; end. + + diff --git a/tests/projects/pascal/shared/src/main.pas b/tests/projects/pascal/shared/src/main.pas index ccf2e179b..02d5e88d0 100644 --- a/tests/projects/pascal/shared/src/main.pas +++ b/tests/projects/pascal/shared/src/main.pas @@ -1,14 +1,13 @@ -uses strings; +program hello; -function SubStr(const CString: PChar; FromPos, ToPos: longint): PChar; +function fib(n: Int64): Int64; cdecl; external 'foo'; var - s: PChar; - FromPos, ToPos: Integer; + Value: Integer; begin - s := strnew('TestMe'); - FromPos := 2; - ToPos := 3; - WriteLn(SubStr(s, FromPos, ToPos)); + Value := 5; + WriteLn(fib(Value)); end. + + |
