29. september 2003 - 21:10Der er
11 kommentarer og 1 løsning
Hjælp med streams!!
Jeg har store kvaler med at på TStream til at virke. Det eneste jeg vil er at kunne gemme og redigere en tekst i den. Jeg har prøvet med disse men alle sammen rejste exceptions, dog ikke compilerfejl:
Jeg fik løst problemet med exceptionen, men nu gemmer den bare ikke noget i min Stream. Det jeg sådan set er ude efter er hvordan streams i det hele taget fungerer.
Jeg er kommet lige langt. Jeg aner stadig ikke hvad f*nden en TStream vil have af parametrer i sin Write funktion uden at lave fejl. Jeg er glad for at i vil hjælpe men alle jeres eksempler har genereret den samme fejl.
Dette bør ikke komme med fejl, viker hos mig... Stream.Write(S[1], Length(S) + 1);
Stream.Write(S, SizeOf(String)); At overstående ikke virker, kan jeg godt forstå, da S er en String, og en String er en pointer. Altså vil adressen til hvor i hukommelsen S gemmer sig blive skrevet til filen, i stedet for strengen S. Svarer til at du tager et billede af et hus, og når du så får det fremkaldt, får du et hvidt billede med adressen til huset skrevet på...
Jeg prøvede med et nyt program bare for at få streams til at virke. Jeg har prøvet dette:
procedure TForm1.Button1Click(Sender: TObject); var Stream: TStringStream; begin Stream := TStringStream.Create('hej'); Stream.WriteString(Memo1.Text); Richedit1.Lines.LoadFromStream(Stream); Stream.Free; end;
Det virker ikke!
Heller ikke dette her virker:
procedure TForm1.Button1Click(Sender: TObject); var Stream: TStringStream; begin Stream := TStringStream.Create('hej'); Memo1.Lines.SaveToStream(Stream); Richedit1.Lines.LoadFromStream(Stream); Stream.Free; end;
Der kommer ingen fejl, men Richedit'en bliver tom. Jeg har også prøvet at bytte om på richedit og memo. Det er dog ikke læsefunktionen den er gal med, for når jeg gør sådan her står der 'hej' i min Richedit:
procedure TForm1.Button1Click(Sender: TObject); var Stream: TStringStream; begin Stream := TStringStream.Create('hej'); // Stream.WriteString(Memo1.Text); Richedit1.Lines.LoadFromStream(Stream); Stream.Free; end;
Tak for hjælpen folkens, men jeg fandt sådan set selv ud af hvad problemet var (altså at Stream.Position skulle være = 0), så jeg lukker bare spørgsmålet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.