Jak przekonwertować dane w STRING do Tstream??

0

Błagam pomocy. Mam funkcje ktora przetwarza dane ale w TSTREAM a ja potrafie operowac jedynie danymi w STRING i nie wiem jak to zastosowac. Jest jakas komenda zeby modz to podstawic?

0

TStringStream.ReadString()?

0

tzn jak mam tego uzyc? Błagam ja naprawde w strumieniach to jestem zielony, nie moge cos zakapowac zasady dzialania.

mam np tak:
var
jakislancuch:ansistring;

begin
jakislancuch:='moje dane';

mojafunkcja(żąda tstream);

jak mam podstawić tam moj lancuch?

0

Jeśli dobrze rozumiem funkcja ma pobierać dane ze strumienia wpisanego jako argument, a zawartością strumienia ma być String.

Jeśli tak, to musisz najpierw załadować dany String do zmiennej typu TStream:

var
  F: TStream;
  S: String;
begin
  F:= TStream.Create;   //bez tego wyskoczy Access Violation
  S:= 'jakiś  string';
  F.Write(PChar(S)^, Length(S));  // -1-
  MojaFunkcja(F);
  (...)
   F.Free;   //po wykorzystaniu strumień zwalniamy
end;

-1- Odnośnie zapisywania i odczytywania danych ze strumieni polecam artykuł gdzieś na 4p, albo lekturę helpa. W przypadku zapisywania długich Stringów należy zastosować właśnie taki sposób zapisu, gdyż String sam w sobie jest wskaźnikiem, a nie tablicą znaków, tak jak krótkie Stringi. Łańcuchy, które są tablicami znaków (długość ograniczona do 255) zapisuje się do strumienia normalnie, tak jak każdy inny typ danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1