Ĺadny brzuch
Mam dwie zmienne string. W jednej są jakieś dane. Druga jest czysta. Mam także strumień (TMemoryStream) w którym są jakieś dane. Teraz problem. Jak z tego strumienia "przenieść" dane do tego pustego stringa ?
Na pewno da się skopiować TMemoryStream do TStringStream, a ten już posiada metodę DataString (zdaje się), która zawiera tekst ze strumienia. Możesz też podejrzeć przykład stąd: http://mc-computing....hi/Streams.html
Dzięki serdeczne, program działa :)
ludzie kochani po co tak kombinować???
jeśli w strimie ma być coś oprócz jednego stringa to trzeba najpierw zapisać jeszcze długość tego textu
procedure StrToStream(Stream: TStream; const s: string); var Len: Integer; begin Len := Length(s); Stream.Write(Len, SizeOf(Len)); Stream.Write(Pointer(s)^, Len); end; function StreamToStr(Stream: TStream): string; var Len: Integer; begin Stream.Read(Len, SizeOf(Len)); SetString(Result, nil, Len); Stream.Read(Pointer(Result)^, Len); end;
jak tylko ten jeden string to tak
//zapis Stream.Write(Pointer(s)^, Length(s)); //odczyt Stream.Read(Pointer(s)^, Stream.Size);
ludzie kochani po co tak kombinować???
Może dlatego, że "wskaźniki są be"? :> A przynajmniej są obecnie mocno odradzane :)
Może dlatego, że "wskaźniki są be"? :> A przynajmniej są obecnie mocno odradzane :)
a kto Ci takich bzdur naopowiadał???
To ni są żadne bzdury, i nikt tu nie kombinuje po prostu każdy robi tak aby dobrze to zrozumieć (no i dla wygody)
a kto Ci takich bzdur naopowiadał???
Nie po to wymyślono języki obiektowe, żeby do końca świata operować wskaźnikami :> I wydaje mi się, że większość osób, które programują, woli jednak unikać wskaźników - bo nie są bezpieczne i tyle :) Ale wiadomo, każdy lubi coś innego - ja na przykład wolę rozwijać funkcjonalność aplikacji niż ślęczeć nad debuggerem w poszukiwaniu dziwnych wycieków pamięci czy zagadkowych wartości w zmiennych ;)
Nie przeczę jednak, że wskaźniki bywają przydatne :)
tamzaraz "be" :P nie są be, ale po co ich używać skoro mamy całą masę gotowych rozwiązań? nie będziemy wyważać otwartych drzwi ...
inna sprawa że wskaźniki dobrze znać, bo nieraz są sytuacje nie do przejścia bez nich ...
nie to, żeby TStringStream robił jakieś cuda bez wskaźników ...
function TStringStream.Write(const Buffer; Count: Longint): Longint; begin Result := Count; SetLength(FDataString, (FPosition + Result)); Move(Buffer, PChar(@FDataString[FPosition + 1])^, Result); Inc(FPosition, Result); end;
oczywiście, że można używać np. TStringStrem nie wiedząc co i jak robi i głosić, że wskaźniki są be
I wydaje mi się, że większość osób, które programują, woli jednak unikać wskaźników - bo nie są bezpieczne i tyle :) Ale wiadomo, każdy lubi coś innego - ja na przykład wolę rozwijać funkcjonalność aplikacji niż ślęczeć nad debuggerem w poszukiwaniu dziwnych wycieków pamięci czy zagadkowych wartości w zmiennych ;)
siekierką też możesz albo narąbać drzewa i ogrzać się w zime albo udrąbać sobie nogę - kwestia wprawy i świadomości.
BTW powiedzcie jakiemuś c++'owcowi, że wskaźniki są be :)
nie to, żeby TStringStream robił jakieś cuda bez wskaźników ...
a kto powiedział że TStringStream nie używa wskaźników do tej operacji? :o
jedyna różnica to taka, że ktoś już napisał ("opakował") ten kod - m.in po to, żebyś Ty miał łatwiej ... ale skoro chcesz przekombinować to czemu nie, jeśli piszesz dla sztuki to w sumie lepiej się czegoś nauczyć... ale jeśli zależy Ci na efekcie końcowym to lepiej skupić się na pisaniu tego, co jeszcze nie powstało ;)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Na pewno da się skopiować TMemoryStream do TStringStream, a ten już posiada metodę DataString (zdaje się), która zawiera tekst ze strumienia. Możesz też podejrzeć przykład stąd: http://mc-computing....hi/Streams.html
Dzięki serdeczne, program działa :)
ludzie kochani po co tak kombinować???
jeśli w strimie ma być coś oprócz jednego stringa to trzeba najpierw zapisać jeszcze długość tego textu
procedure StrToStream(Stream: TStream; const s: string); var Len: Integer; begin Len := Length(s); Stream.Write(Len, SizeOf(Len)); Stream.Write(Pointer(s)^, Len); end; function StreamToStr(Stream: TStream): string; var Len: Integer; begin Stream.Read(Len, SizeOf(Len)); SetString(Result, nil, Len); Stream.Read(Pointer(Result)^, Len); end;
jak tylko ten jeden string to tak
//zapis Stream.Write(Pointer(s)^, Length(s)); //odczyt Stream.Read(Pointer(s)^, Stream.Size);
ludzie kochani po co tak kombinować???
Może dlatego, że "wskaźniki są be"? :> A przynajmniej są obecnie mocno odradzane :)
Może dlatego, że "wskaźniki są be"? :> A przynajmniej są obecnie mocno odradzane :)
a kto Ci takich bzdur naopowiadał???
To ni są żadne bzdury, i nikt tu nie kombinuje po prostu każdy robi tak aby dobrze to zrozumieć (no i dla wygody)
a kto Ci takich bzdur naopowiadał???
Nie po to wymyślono języki obiektowe, żeby do końca świata operować wskaźnikami :> I wydaje mi się, że większość osób, które programują, woli jednak unikać wskaźników - bo nie są bezpieczne i tyle :) Ale wiadomo, każdy lubi coś innego - ja na przykład wolę rozwijać funkcjonalność aplikacji niż ślęczeć nad debuggerem w poszukiwaniu dziwnych wycieków pamięci czy zagadkowych wartości w zmiennych ;)
Nie przeczę jednak, że wskaźniki bywają przydatne :)
tamzaraz "be" :P nie są be, ale po co ich używać skoro mamy całą masę gotowych rozwiązań? nie będziemy wyważać otwartych drzwi ...
inna sprawa że wskaźniki dobrze znać, bo nieraz są sytuacje nie do przejścia bez nich ...
nie to, żeby TStringStream robił jakieś cuda bez wskaźników ...
function TStringStream.Write(const Buffer; Count: Longint): Longint; begin Result := Count; SetLength(FDataString, (FPosition + Result)); Move(Buffer, PChar(@FDataString[FPosition + 1])^, Result); Inc(FPosition, Result); end;
oczywiście, że można używać np. TStringStrem nie wiedząc co i jak robi i głosić, że wskaźniki są be
I wydaje mi się, że większość osób, które programują, woli jednak unikać wskaźników - bo nie są bezpieczne i tyle :) Ale wiadomo, każdy lubi coś innego - ja na przykład wolę rozwijać funkcjonalność aplikacji niż ślęczeć nad debuggerem w poszukiwaniu dziwnych wycieków pamięci czy zagadkowych wartości w zmiennych ;)
siekierką też możesz albo narąbać drzewa i ogrzać się w zime albo udrąbać sobie nogę - kwestia wprawy i świadomości.
BTW powiedzcie jakiemuś c++'owcowi, że wskaźniki są be :)
nie to, żeby TStringStream robił jakieś cuda bez wskaźników ...
a kto powiedział że TStringStream nie używa wskaźników do tej operacji? :o
jedyna różnica to taka, że ktoś już napisał ("opakował") ten kod - m.in po to, żebyś Ty miał łatwiej ... ale skoro chcesz przekombinować to czemu nie, jeśli piszesz dla sztuki to w sumie lepiej się czegoś nauczyć... ale jeśli zależy Ci na efekcie końcowym to lepiej skupić się na pisaniu tego, co jeszcze nie powstało ;)