StringStream

asdfghjkl

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

4

659

    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. Lopetin kokonaan ravintoloissa ruokailun ja juomisen

      Ravintoloissa hinnat ovat aivan naurettava korkealla. Alkoholin juomisessa ravintoloissa ei ole senkään vertaa järkeä.
      Maailman menoa
      171
      2636
    2. Omakotitalossa väkivaltaa ounasrinteellä

      Kertoo iltalehdet Mitä lienee Tapahtui. Verinen ihminen kannettu lanssiin
      Rovaniemi
      22
      2274
    3. kukaan ei pakota kasteeseen..

      Kommentointi estetty, joten kommentoin tähän.Kukaan ei pakota pakkokasteesta puhuvaa kastamaan lastansa.Noloa edes ehdot
      Kaste
      400
      1075
    4. Mari Rantanen eroa! Lausunnot vapun pahoinpitelystä ovat järkyttäviä!

      Poliisiministerin, eli sisäministeri Mari Rantasen on syytä erota!
      Maailman menoa
      154
      984
    5. Anabaptismin kirous

      Uudestikastetut lahkolaiset joutuvat valheen kierteeseen. He joutuvat herjaamaan lapsena saamaanssa kastetta nimeen Isä
      Kaste
      392
      891
    6. Kai odotan että

      Juokset vielä perässäni
      Ikävä
      67
      888
    7. Mitä ikävöit eniten

      kaivatussasi? 🫶
      Ikävä
      62
      837
    8. Kerrohan T miehelle yksi syy

      Miksi hänen tulisi kaivata sinua?
      Ikävä
      101
      753
    9. Rakas, haluan sut niin hulluna kuin olet, tiedän jo sun pakkomielteet ja muut jutut, ihana naiseni

      Kunhan et minun takia satuta itseäsi tai muita, minulla nyt ole niin väliä. Rakas mä ymmärrän ja näen kaiken, sun suure
      Ikävä
      48
      714
    10. Euroviisuhuitelua

      En ole koko viisuista kiinnostunut enkä aio edes katsoa kisoja. Ihmetyttää tämä vouhkaaminen laulaja pariskunnasta joka
      80 plus
      34
      672
    Aihe