StringStream

asdfghjkl

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

4

733

    Vastaukset 4

    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. Olisko jo aika?

      Voisitko jo viimein puhua tai avata edes yhteydet sen mahdollistamiseksi.
      Ikävä
      108
      1297
    2. Kuin moni sun

      Perään on jäänyt itkemään?
      Ikävä
      88
      766
    3. Miten uimaportaat voivat maksaa 250 000 euroa?

      Ei mitenkään, jokainen täysjärkinen sen tietää. Ei se ihme ettei verovarat riitä. https://www.is.fi/taloussanomat/art-2
      Maailman menoa
      119
      674
    4. Hyvä tietää

      Onko jotain, mitä hänen olisi hyvä tietää?
      Ikävä
      53
      672
    5. Mikä oli suurin

      Ongelma välillämme?
      Ikävä
      84
      662
    6. Rakas, ihana rakkain elämäni rakkaus

      Minäkin tarvisin ne sanat sinulta. Tosin annat sen tunteen läsnäolollasi.. jos vain me vielä nähdään.. pelkään sitä maai
      Ikävä
      36
      643
    7. Jussi kutsuisi eduskunnan koolle, jos joku pyytäisi

      Eikös oppositio ole huudellut eduskuntaa koolle jo monta viikkoa? "– En ole saanut siihen liittyvää pyyntöä tai toivett
      Maailman menoa
      103
      618
    8. Hei gaggelibylly ootko valmis?

      Tuun kohta hakee sut ratsullani miesprinsessa ❤️
      Ikävä
      77
      560
    9. Rakastamisesi tarkoitus

      Mikä oli kaiken tarkoitus? En sitä tiedä, en ymmärrä. Olet mielessäni, alati. Olen miettinyt. Ei sillä taida olla merki
      Ikävä
      49
      510
    10. Martinalle onnea

      Kaunis Martina täyttää tänään 44 vuotta! Olkoon syntymäpäivä iloa ja onnea täynnä.
      Kotimaiset julkkisjuorut
      215
      509
    Aihe