StringStream

asdfghjkl

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

4

638

    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. Dannysta tulee isä 83-vuotiaana

      Huh huh sentään sellaista naista, joka laitattaa itsensä paksuksi ikälopulle papalle ! Ajatellaanko lapsen oikeuksia oll
      Maailman menoa
      176
      6891
    2. Seida Sohrabi: Suomi ei ole rasistinen maa

      Seidalta taas täyttä asiaa. Miksi punavihreät naiset eivät pysty samaan - no se ideologia estää. "Meillä on valitettava
      Maailman menoa
      231
      4029
    3. Ketkä haukkuu suomalaisten ÄO:tä?

      Siinä on kaksi vaihtoehtoa, joko siis rutiköyhä vajaaälyinen vasuri tai venäläinen. Kyllähän täällä käy suomenvenäläisi
      Maailman menoa
      67
      3341
    4. Henkirikos kiuruvedellä

      Poliisi tutkii maaliskuussa tapahtunutta 50 luvulla syntyneen kuolemaa henkirikoksena. Missä päin tälläinen sattunut
      Kiuruvesi
      77
      2757
    5. Diesel-ammattilainen kehuu Sanna Marinia

      "Sanna Marinin (sd) hallitus loi neljä vuotta sitten väliaikaisen polttoaine­tuki­järjestelmän, kun energianhinnat nousi
      Maailman menoa
      7
      2176
    6. Pitkänperjantain kunniaksi tekoälyn analyysi Riikka Purran kirjoituksesta

      🧠 Mitä se kertoo "riikka"-nimimerkin lähijunassa tapahtuneesta? 1. Asenteellinen ja epäasiallinen sävy: Kirjoitus purs
      Maailman menoa
      4
      2065
    7. 100 prosentin perintövero korjaisi myös Hitas-ongelman

      Moni ei uskalla kieltäytyä perinnöstä maineen menettämisen uhalla, joten sitten tulee näitä tilanteita, joissa joutuu es
      Maailman menoa
      2
      1862
    8. Kunnanjohtaja haista sinä

      Kyvytön johtamaan kuntaa! Täysin kyvytön. Toivottavasti Hattula saa sinut vaivoikseen. Epäpätevä, ammattitaidoton, yhtei
      Heinävesi
      35
      1531
    9. Gallup: Mitä teillä syödään pääsiäisenä, onko juhlaruokaa vai meneekö arkiruoilla?

      Monessa perheessä pääsiäisenä pöytään pistetään vähän parempaa herkkua. Pääruokaan panostetaan ja lisäksi leivotaan vaik
      Liharuoka
      43
      1425
    10. Loimaan k-citymarketilla puukotus

      Jonka on puukotettu Loimaan citymarketilla tänään iltapäivällä noin klo 14. Kuulin kun ambulanssi huusi kaupungilla kun
      Loimaa
      46
      1368
    Aihe