
delphi memory/string stream
dobry den,
mam mensi problem s tymto kodom:
...
zdrojak:TStringStream;
zdrojak1:TMemoryStream;
begin
zdrojak1:=TMemoryStream.Create();
zdrojak1.LoadFromFile(SuborStiahnuteData);
zdrojak:=TStringStream.Create('');
zdrojak.CopyFrom(zdrojak1,zdrojak1.Size);
zaciatokRiadok:=pos('td id=',zdrojak.DataString);
zaciatokUdaj:=PosEx('>',zdrojak.DataString,zaciatokRiadok);
do zdrojak1 sa mi asi spravne nacita subor(stiahnuta webstranka). ked som to po nacitani zo suboru hned ulozil do dalsieho suboru, tak to bolo rovnake ALE zdrojak1.size mi ukazuje mensiu hodnotu! resp. rovnaku hodnotu ako zdrojak.size....ked sa pouzije ta hodnota, tak obsahuje iba stvrtinu udajov zo stranky. jej velkost je okolo 125 000.
problem je, ze ked pouzijem zdrojak.CopyFrom, tak sa mi tam nenakopiruju vsetky data. robim to preto takto, aby som v tom stringstream mohol vyhladavat pomocou pos a posex funkcii.
odkopiroval som to z programu co som robil kedysi a vtedy mi to fungovalo. nevie mi niekto poradit preco mi to nejde, alebo ako to spravit tak, aby mi to islo?
dakujem.
skusil som to est etakto obklukou:
a ani takto to nejde-nenacita to cely subor-subor je pritom spravny.
Nepochopil jsem, co tim kodem chces dosahnout.
Stringy obecne skonci znakem #0, takze pokud tento znak je v datech a oddeluje nejake davky, nepouzivej TStringStream apod.
chcem dosiahnut to, ze zdrojovy kod stranky nacitam zo suboru do stringstreamu aby som s nim mohol pracovat(pomocou funkcii pos a posex hladat udaje ktore potrebujem na dalsiu pracu.)
edit: pises, ze nemam pouzivat stringstream-ako inac sa to da spravit?
a nie som si isty s tym #0, lebo ono to skonci v strede slova.
pouzil by som c#, ktory taktiez zvladam, ale nie som si isty, ci budem moct nainstalovat netframework na stroji na ktorom to chcem spustit.
Nepotrebujes StringStream, zkus mito toho pouzit TStringList - je to kolekce retezcu.
TStringStream je takovy divny hybrid.
Kdyz pracujes se streamem, musis si hlidat velikost apod.
Zkus sem dat priklad souboru, ktery zpracovavas.
Neni problem zdrojovy kod webove stranky stahnout primo do TStringList a pak prochazet bez nutnosti jakychkoliv mezisouboru.
Potrebuješ zistiť výskyt nejakého reťazca v súbore? Aspoň tak som to pochopil....
Ja by som to riešil asi takto: