TList

14+18

Miten tuota TList pitäisi käyttää (kokemusta lähinnä taulukoista)

Miten sillä tuodaan olion sisältä dataa?
Miten sillä viedään olion sisälle dataa?

Löytyisikö seimerkkiä näihin.

5

562

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Delphiguru

      "Miten tuota TList pitäisi käyttää (kokemusta lähinnä taulukoista)

      Miten sillä tuodaan olion sisältä dataa?
      Miten ?"

      siis...

      TList -luokka ei ole siksi, että sillä "tuodaan olion sisältä dataa" tai "sillä viedään olion sisälle dataa".

      VAAN:

      TList -luokka on luokka, joka sisältää objektiviitteitä, joita siihen on tallennettu.

      Siis:

      var

      L : TList;

      begin

      L := TList.Create;

      try

      L.Add(Objekti1);

      L.Add(Objekti2);

      L.Add(Objekti3);

      // Tässä voi käyttää ko. listaa. Esimerkiksi:

      for i := 0 to L.Count - 1 do begin

      if L[i] is TEdit then TEdit(L[i]).Text := 'haloo';

      if L[i] is TLabel then TLabel(L[i]).Caption := 'heippa';

      if L[i] is TStrings then TStrings(L[i]).add('Uuno Turhapuro');

      end;

      finally

      FreeAndNil(L);

      end;

      end;

      HUOM!

      Kannattaa kirjoittaa Delphin Editorissa TList, siirtää kohdistin alku- T:n kohdalle ja painaa Ctrl-F1, ja LUKEA (englanninkielinen) ohjeteksti avautuvasta ikkunasta.

      • 1 4 + 1 8

        Noi kysymykset oli tarkoitettu olevan vähän erillään.

        " TList -luokka ei ole siksi, että sillä "tuodaan olion sisältä dataa" tai "sillä viedään olion sisälle dataa"."


        Eli noihin kahteen viimeiseen kysymyksen
        ajatuksena on että minulla on olio johon kuuluu tuo lista.
        Miten luen sen (kokoinaisen) listan toiseen olioon.

        Ja vastaavasti miten siirrän toisesta oliosta tuollaisen listan.


      • Delphiguru
        1 4 + 1 8 kirjoitti:

        Noi kysymykset oli tarkoitettu olevan vähän erillään.

        " TList -luokka ei ole siksi, että sillä "tuodaan olion sisältä dataa" tai "sillä viedään olion sisälle dataa"."


        Eli noihin kahteen viimeiseen kysymyksen
        ajatuksena on että minulla on olio johon kuuluu tuo lista.
        Miten luen sen (kokoinaisen) listan toiseen olioon.

        Ja vastaavasti miten siirrän toisesta oliosta tuollaisen listan.

        riippuu muistinhallinnasta.

        Suomi24:n typerä forumsofta juuri tuhosi vastaukseni koska se ylitti 5000 merkkiä.

        Siis ei laskuria kirjoittamisen aikana ja lopuksi ilmoitus:

        "vastauksesi on liian pitkä"

        Kun tästä siirty toiselle välilehdelle, niin kirjoitettua tektiä ei saa takaisin mitenkään !

        Ratkaisu on periaatteessa helppo:

        Olio1.Lista.Assign(Olio2.Lista);

        missä molemmissa olioissa Lista on TList -tyyppiä.

        huomaa kuitenkin, että olet itse vastuussa oikeasta muistinhallinnasta!

        Formin omistamien käyttöliittymäkomponenttien osalta muistinhallinta on automaattista (perustuu Owner -kenttään), muuten olet siitä itse vastuussa.

        Jos muistinhallinta tuntuu hankalalta:

        http://www.justsoftwaresolutions.co.uk/delphi/using-interfaces-for-exception-safety.html

        http://edn.embarcadero.com/article/28217

        siis interface (ja TInterfacedObject) on tässä avainsana.


      • Kahvipapua
        Delphiguru kirjoitti:

        riippuu muistinhallinnasta.

        Suomi24:n typerä forumsofta juuri tuhosi vastaukseni koska se ylitti 5000 merkkiä.

        Siis ei laskuria kirjoittamisen aikana ja lopuksi ilmoitus:

        "vastauksesi on liian pitkä"

        Kun tästä siirty toiselle välilehdelle, niin kirjoitettua tektiä ei saa takaisin mitenkään !

        Ratkaisu on periaatteessa helppo:

        Olio1.Lista.Assign(Olio2.Lista);

        missä molemmissa olioissa Lista on TList -tyyppiä.

        huomaa kuitenkin, että olet itse vastuussa oikeasta muistinhallinnasta!

        Formin omistamien käyttöliittymäkomponenttien osalta muistinhallinta on automaattista (perustuu Owner -kenttään), muuten olet siitä itse vastuussa.

        Jos muistinhallinta tuntuu hankalalta:

        http://www.justsoftwaresolutions.co.uk/delphi/using-interfaces-for-exception-safety.html

        http://edn.embarcadero.com/article/28217

        siis interface (ja TInterfacedObject) on tässä avainsana.

        Harmi kun jää näkemättä näiden Delphi gurujen koodia


      • Delphikoodari..
        Kahvipapua kirjoitti:

        Harmi kun jää näkemättä näiden Delphi gurujen koodia

        Eli siis TList vain säilöö kokoelman pointereita, jotka siis osoittaa olioihin tai mihin tahansa dataan, sinne siis voi "upottaa" mitä tahansa materiaalia ja käydä läpi, tosi hyödyllinen tuo TList :)

        Yksi nopeutusvinkki myös TListin köytöstä, kun se pitää käydä läpi..

        for I := 0 to lista.count-1 do
        begin
        objektiX := TObjectiX( lista.List[I] );

        if Assigned( objektiX ) then
        begin
        //.. jeps...
        end;

        end;


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

    Luetuimmat keskustelut

    1. Valtion alijäämä = yritystukien määrä = 10 mrd. euroa

      Mutta persut eivät vaan suostu tasapainottamaan valtion budjettia, vaikka yritystuet on tiedetty haitallisiksi. Miksi p
      Maailman menoa
      57
      6243
    2. Suomi käyttää sosiaalietuuksiin suhteessa eniten rahaa koko maailmassa

      Suomi käyttää sosiaaliturvaetuuksiin enemmän rahaa suhteessa bruttokansantuotteeseen kuin mikään muu maa maailmassa. Su
      Maailman menoa
      333
      5233
    3. Poliisien suosikkipuolueet ylivoimaisesti: Kokoomus ja persut

      samoin on armeijan henkilöstön kanssa. Sen sijaan sekä vihreät, vasliitto ja SDP ovat hyljeksittyjä puolueita poliisien
      Maailman menoa
      161
      4939
    4. Sdp, Vihreät ja vasemmistoliitto muuttumassa naisten puolueiksi?

      Sdp 64 % naisia, vihreät 70 % naisia ja vasemmistoliitto 60 % naisia. Ilmankos ne puolueet ajaa autoilevien kantasuomal
      Maailman menoa
      139
      4737
    5. Epäonnistunut "Tuppurais-operaatio" kaatoi Purran hallituksen

      Persut yrittivät viimemetreillä häivyttää omaa täydellistä epäonnistumistaan syyttämällä opposition edustajaa nimettömil
      Maailman menoa
      20
      3980
    6. Ostaisitko sinä rempattavan asunnon Italiasta tai jostain muualta ulkomailta, mistä?

      Ella Kanninen on tehnyt Italiassa asuntokaupat. Hän kertoo Instagramissa kierrelleensä viime kesänä Toscanassa katselema
      Asunnot ja asuminen
      20
      2486
    7. Jenni Alexandrova ja Toni Lähde ratkeavat liitoksistaan - Tällainen on uusperhe!

      Radiojuontaja Jenni Alexandrova ja Diili-tuttu Toni Lähde ovat pariskunta, joka elää uusperhearkea. He ovat ostaneet uud
      Suomalaiset julkkikset
      3
      2268
    8. Vähän fiksumpi Nimi kisa ? :=)

      Kirjoita teidän etunimet allekkain. Jos nimissä on joku kirjain sama, poista se. Tee sama tarkistus kaikille kirjaimill
      Ikävä
      26
      1990
    9. Romanttinen ystävänpäivä?

      Millainen olisi hyvä ystävänpäivä hänen kanssaan?
      Ikävä
      73
      1862
    10. Kaisa Juuso eroaa

      Jää välittömästi sairaslomalle. Onko nyt Keskisarjan vuoro?
      Perussuomalaiset
      222
      1661
    Aihe