2
0

stringl.pp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. program teststrings;
  2. {$mode objfpc}{$h+}
  3. Uses classes,sysutils;
  4. Procedure DoRef (P : Pointer);
  5. Type PLongint = ^Longint;
  6. begin
  7. If P=Nil then
  8. Writeln ('(Ref : Empty string)')
  9. else
  10. {$ifdef fpc}
  11. Writeln (' (Ref: ',Plongint(Longint(P)-4)^,',Len: ',PLongint(Longint(P)-8)^,')');
  12. {$else}
  13. Writeln (' (Ref: ',Plongint(Longint(P)-8)^,',Len: ',PLongint(Longint(P)-4)^,')');
  14. {$endif}
  15. end;
  16. Procedure test;
  17. var S,TS : ANsiSTring;
  18. T : TStringList;
  19. I,J : Longint;
  20. A : String[255];
  21. begin
  22. S:='An Ansi string ';
  23. T:=TStringList.create;
  24. Writeln ('Count : ',T.Count,' Capacity : ',T.Capacity);
  25. For I:=1 to 10 do
  26. begin
  27. str (I,TS);
  28. T.Add(S+TS);
  29. end;
  30. Writeln ('Count : ',T.Count,' Capacity : ',T.Capacity);
  31. J:=T.Count-1;
  32. Writeln ('J : ',J);
  33. For I:=0 to J do
  34. Writeln(I,'/',J,' : ',T.Strings[I]);
  35. T.SaveToFile ('strings.dat');
  36. T.Clear;
  37. T.LoadFromFile('strings.dat');
  38. J:=T.Count-1;
  39. Writeln ('Count = ',J);
  40. For I:=0 to J do
  41. Writeln(I,'/',J,' : ',T.Strings[I]);
  42. Writeln ('IndexOf(''An Ansi string 6'') = ',T.IndexOf('An Ansi string 6'));
  43. Writeln ('IndexOf(''An Ansi string 11'') = ',T.IndexOf('An Ansi string 11'));
  44. T.Clear;
  45. For I:=1 to 10 do
  46. T.Values['Var'+IntToStr(I)]:='Val'+IntToSTr(I);
  47. J:=T.Count-1;
  48. Writeln ('J = ',J);
  49. For I:=0 to J do
  50. Writeln(I,'/',J,' : ',T.Strings[I]);
  51. Writeln ('Indexof(''Var6'') = ',T.IndexOfName('Var6'));
  52. Writeln ('Indexof(''Var13'') = ',T.IndexOfName('Var13'));
  53. Writeln ('Value[''Var6''] = ',T.Values['Var6']);
  54. Writeln ('Value[''Var13''] = ',T.Values['Var13']);
  55. Try
  56. Writeln ('String 100 = ');
  57. S:=T.Strings[100];
  58. except
  59. On e: exception do Writeln ('Caught exception : ',e.message);
  60. end;
  61. T.Free;
  62. end;
  63. Var Data : longint;
  64. t : THeapStatus;
  65. begin
  66. Data:=getfpcheapstatus.currheapused;
  67. test;
  68. Writeln ('Lost ',getfpcheapstatus.currheapused-data);
  69. end.