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?
TStringStream.ReadString()?
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?
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.