home *** CD-ROM | disk | FTP | other *** search
-
- program ldb1;
- uses bind;
-
- type strPtr = ^string;
-
- procedure display(D, M, A : pointer); far;
- type strPtr = ^string;
- intPtr = ^integer;
- var i : integer;
- begin
- i := length(strPtr(D)^);
-
- inc(intPtr(A)^,i);
- writeln('length: ',i,
- ' accumulated: ',intPtr(A)^,
- ' string: ',strPtr(D)^);
- end;
-
- function strcmp(D1, D2 : pointer) : integer; far;
- begin
- if (strPtr(D1)^ < strPtr(D2)^) then
- strcmp := -1
- else if (strPtr(D1)^ > strPtr(D2)^) then
- strcmp := 1
- else
- strcmp := 0
- end;
-
-
- const
- s1 : string = 'Now is the time';
- s2 : string = 'for all programmers';
- s3 : string = 'to stop reinventing';
- s4 : string = 'the linked list!';
-
-
- var B : CopyBinder;
- i : word;
-
- begin
- B.Init(CSTRING);
-
- B.pushC(@s1);
- B.insqC(@s2);
- B.atInsC(B.getNodes,@s3);
- B.insqC(@s4);
-
- while (B.next) do
- writeln(strPtr(B.current)^);
-
- writeln;
-
- for i := 0 to (B.getNodes - 1) do
- writeln(strPtr(B.atGet(i))^);
-
- writeln;
-
- i := 0;
-
- B.forEach(display,nil,@i);
-
- writeln;
-
-
- B.setCompare(strcmp);
- B.sort;
-
- i := 0;
-
- B.forEach(display,nil,@i);
-
- B.Done;
-
- readln
-
- end.
-