tests.pp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. { %version=1.1}
  2. {$mode objfpc}
  3. Program tests;
  4. Var
  5. P : PWideChar;
  6. S : AnsiString;
  7. W,WP : WideString;
  8. PO : Pointer;
  9. Const
  10. Buffer : Array[0..10] of Widechar
  11. = ('A','n','s','i','S','t','r','i','n','g',#0);
  12. {
  13. procedure OleStrToStrVar(Source: PWideChar; var Dest: string);
  14. begin
  15. WideCharLenToStrVar(Source, Length(WideString(Pointer(Source))), Dest);
  16. end;
  17. Function OleStrToString(Source : PWideChar) : String;
  18. begin
  19. OleStrToStrVar(Source, Result);
  20. end;
  21. }
  22. Function PWideCharLen(P: PWideChar) : Integer;
  23. Var
  24. W : PWord;
  25. begin
  26. Result:=0;
  27. If P=Nil then
  28. Exit;
  29. W:=PWord(P);
  30. While W[Result]<>0 do
  31. Inc(Result);
  32. end;
  33. Function PWideCharToWideString(P : PWideChar) : WideString;
  34. Var
  35. L : integer;
  36. begin
  37. L:=PWideCharLen(P);
  38. SetLength(Result,L);
  39. If P<>Nil then
  40. Move(P^,Result[1],L*SizeOf(WideChar));
  41. end;
  42. begin
  43. S:='AnsiString';
  44. W:=S;
  45. Writeln(W);
  46. P:=PWideChar(W);
  47. Writeln('len : ',Length(WideString(Pointer(P))));
  48. // P:=PWideChar(@Buffer[0]);
  49. P:=Buffer;
  50. Writeln('Len array : ',PWideCharLen(P));
  51. WP:=PWideCharToWideString(P);
  52. Writeln('WP Len : ',Length(WP),' : ',WP);
  53. PO:=Nil;
  54. WP:=WideString(PO);
  55. // Writeln('len buffer: ',Length(P)); //WideString(Pointer(P))));
  56. // Writeln(P);
  57. end.