StringStream

asdfghjkl

Mihin TStringStream käytetään (eli mihin se soveltuu hyvin)?

4

556

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Mika0800

      TStringStream

      Mikset kirjoita koodiisi vaikkapa:

      var

      S1 : TStringStream;

      sitten vain klikkaat sanaan TStringStream ja painat Ctrl-F1.

      Delphissä on hyvä online -opastejärjestelmä, jota kannattaa käyttää.

      toki täytynee mainita, etten muista kertaakaan itse käyttäneeni TStringStream -tyyppiä vaikka Delphillä olenkin ohjelmoinut.

      Ja ainakin Delphi7:ssä tuon luokan toteutuksessa on sitäpaitsi virhe !

      Seek -metodista löytyy tällaista:

      case Origin of
      soFromBeginning: { katso lähdekoodista }
      soFromCurrent: { katso lähdekoodista }
      soFromEnd: FPosition := Length(FDataString) - Offset;
      end;

      Ohjeen mukaan tuossa soFromEnd -tapauksessa Offsetin on oltava

      • Delphi koodari

        Offset on datatyyppiä word, jonka lukualue on
        0-65535, joten koodissa ei ole virhettä.

        Streamit ovat käteviä, jos dataa pitää käsitellä nopeasti tai datan määrä on suuri.


    • StringList <> StringS...

      Miten sitten StringList eroaa StringStream:stä
      (mitkä on niiden suurrimmat erot)

      • Mika0800

        Delphin omasta Helpistä löytyy toki vastaus tuohonkin.

        Lisäksi Classes.pas -tiedostosta on noiden lähdekoodikin tutkittavissa.

        Tässäkin ketjussa jonkun on taas pitänyt päteä "tiedoillaan" jotka eivät edes pidä paikkaansa:

        function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual;
        function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; overload; virtual;

        tässä noiden TStream (josta TStringStream periytyy) -luokan metodimäärittelyjä - kuten selkeästi nähdään, niin Origin on toki tyyppiä word, mutta sehän voi olla vain jokin näistä kiinteistä arvoista:

        JOKO: soBeginning, soCurrent, soEnd
        TAI:
        soFromBeginning = 0;
        soFromCurrent = 1;
        soFromEnd = 2;

        (kätevä tuo overload - eikö ?)

        Sensijaan Offset on etumerkillistä tyyppiä, ja jos esim. haluat lukea Streamin 2 viimeistä tavua, se todellakin hoituu näin:

        var
        S1:TStream;
        W : Word;


        begin
        // koodia, jossa luodaan S1

        // ....

        //
        S1.Seek(-2, soEnd);
        // vaihtoehtoisesti voi toki myös:
        // S1.Position := S1.Size - 2;

        S1.ReadBuffer(W, SizeOf(W));

        // vapauta;
        FreeAndNil(S1);
        end;


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Hallitus pyrkii rajoittamaan kaupan omien halpamerkkien myyntiä

      Helsingin Sanomien mukaan hallitus valmistelee lakihanketta, joka suitsii kaupan valtaa ja rajoittaa omien halpamerkkien
      Yhteiskunta
      231
      3427
    2. Tapettu

      On joku kangaskadulla perjantaina
      Sotkamo
      60
      3015
    3. Björn Wahlroos, maataloustuet lakkautettava

      Sanoo pankkimies. Mitäs persut ja muut tukinulliem perskärpäset tähän? "Wahlroos listaa kansallisen maataloustuen. – I
      Maailman menoa
      55
      2619
    4. Persut päättivät hiilivoiman kieltämisestä Suomessa

      Moni on jo unohanut kuka hyväksyi hiilivoimaloiden kieltämisen Suomessa: persut Sukupuolineutraalit liikennemerkitk
      Maailman menoa
      33
      2538
    5. Työvoimatoimisto

      Nyt kysyisin miksi pitää käydä työvoimatoimistossa paikanpäällä, kun he eivät muuta tee kuin laittavat koneelle uudet ve
      Työttömyys
      80
      2071
    6. Muistattekos kuinka kokoomus ja persut vinkuivat sähkön hinnasta?

      Oppositiossa vuonna 2022, kun sähkön hinta uhkasi nousta 20 senttiin kilowattitunnilta? Nyt ovat hiiren hiljaa, kun pitä
      Maailman menoa
      85
      1899
    7. Nalle Wahlroos ei ulise kuten Teemu Selänne sähkölaskuista

      Nalle "hah hah" nauroi saamistaan sähkötuista, kun taas Teemu-poika itkeä tirautti kovasta sähkön hinnasta. Nalle nauro
      Maailman menoa
      19
      1865
    8. Vain persut vastustivat hiilivoimaloiden alasajoa

      Persut vastusti jyrkästi hiilen kieltolakia ja on myöhemmin vaatinut hiilivoimaloiden pitämistä käytössä. He perusteliva
      Maailman menoa
      40
      1832
    9. Mikä aate kaiken pahan takana?

      Se laiskistuttaa kansat, opettaa vaatimaan etuisuuksia, syleilee maailmoja eikä omaa kansaa.
      Maailman menoa
      91
      1692
    10. Mietin sua liikaa

      Mietin nytkin sitä, että millaista se olisi tulla kotiin, kun sinä olisit täällä vastassa. Tai niin päin, että sinä tuli
      Ikävä
      69
      1053
    Aihe