StringStream

asdfghjkl

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

4

529

    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. Vassarit kummittelee pääni sisällä joulunakin

      Hetki sitten alkoi punakapina. Joulupäivään mennessä ollaan jo Lindtmanin nuoruusvuosien näytelmäkerhossa. Tapaninpäivän
      Maailman menoa
      50
      2652
    2. Oho, köyhyys väheni Marinin hallituskaudella

      👋💥🤕 Tuonkin Marinin hallitus sössi --- Vuosien 2019–2023 sosiaaliturva- ja verotusperusteiden muutokset suhteessa h
      Maailman menoa
      73
      2251
    3. Kylläpä asiat onkin nyt hyvin verrattuna Sannan aikaan

      Sannan aikana aähkön alv oli 10%, nyt 25,5%. Ajatelkaa nytkin pörssisähkö on ilmaista, keskellä talvea! Bensan hinta on
      Maailman menoa
      3
      1651
    4. En tiedä mitä olet mulle

      Rakkauteni,ihastukseni,pakkomielteeni,mitä lie. Jokatapauksessa ajattelen sinua päivittäin lämmöllä ja haluan toivottaa
      Ikävä
      49
      1116
    5. On mullakin

      Sua ikävä. En vain pysty siihen mitä toivot. Siksi toivon joskus että voisin vain olla hetken lähelläsi
      Ikävä
      49
      957
    6. Ukrainan raukkamainen isku Moskovaan.

      Pitikö isku tehdä juuri jouluna.Siinä saattoi jäädä joku lapsi isättömäksi.Kyseessä ei edes sotilaskohde.
      Maailman menoa
      280
      954
    7. Vittumaista Joulua Kuhmolaisille.

      Siinäpä se tiivistettynä.
      Kuhmo
      15
      844
    8. Mikä on kaunein naisennimi jonka tiedätte?

      Kotimainen tai ulkomainen.
      Sinkut
      68
      839
    9. Ikävä edelleen sinua

      Tänään tunnen sen vahvasti. Kaipaan sinua elämääni. En haluaisi heittää hukkaan sitä mitä meillä oli, mutta ollaan aja
      Ikävä
      19
      759
    10. Sekaisin ihastuksesta

      Oletko mennyt joskus sekaisin ihastuksesta? Miten se on näkynyt, tuntunut tai saanut sinut käyttäytymään? Onko jotain, m
      Ikävä
      54
      741
    Aihe