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

463

    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. Istuva kansanedustaja epäiltynä pahoinpitelystä ja ampuma-aserikoksesta

      Seiskan tietojen mukaan Timo Vornanen on epäiltynä pahoinpitelystä ja ampuma-aserikoksesta eikä kenellekään taatusti tul
      Maailman menoa
      432
      3095
    2. Timo Vornanen kilahti

      Mikähän sille kansanedustajalle polisiisi miehelle on noin pahasti mennyt hermot , että tulevaisuudensa pilasi totaalise
      Kotka
      107
      2462
    3. Tollokin tajuaa että Timo Vornanen

      oli joutunut äärimmäiseen tilanteeseen ampuessaa yhden laukauksen katuun. Ei poliisi tee tuollaista hetken mielijohteest
      Maailman menoa
      367
      2257
    4. Pullonpalautusjärjestelmä muuttuu - paluu menneisyyteen

      EU suuressa viisaudessaan on päättänyt, että pulloja pitää kierrättää. Jos oikein ymmärsin, nykyisen järjestelmänmme ti
      Maailman menoa
      158
      2025
    5. Sininen farmari - Ford Focus- YFB-842 on poliisilta kadoksissa Kauhajärvellä

      https://alibi.fi/uutiset/poliisilta-poikkeuksellinen-vihjepyynto-autossa-oleva-henkilo-on-avuntarpeessa/?shared=29255-2d
      Lapua
      7
      1837
    6. Onko oikeudenmukaista? Yhdellä taholla yllättävä valta-asema Tähdet, tähdet -voittajan valinnassa!

      Näinpä, onko sinusta tämä oikein? Viime jaksossakin voittaja selvisi vain yhden äänen erolla ja tänä sunnuntaina ensimm
      Tv-sarjat
      23
      1267
    7. 166
      1255
    8. No kerros nyt nainen

      Kumpi mielestäsi oli se joka väärinkäsitti kaiken? Nyt voi olla jo rehellinen kun koko tilanne on jo lähes haihtunut.
      Ikävä
      97
      1176
    9. Persukansanedustaja Timo Vornanen ammuskellut Helsingissä

      Poliisi siviiliammatiltaan, luvallinen ase mukana baarissa tällä hemmetin valopääpersulla. Meni eduskunnasta suoraan baa
      Haapavesi
      72
      1094
    10. Nainen, mietit miten minä jaksan

      En voi hyvin. Nykyään elämäni on lähinnä selviytymistä tunnista ja päivästä toiseen. Usein tulee epävarma olo, että mite
      Ikävä
      88
      957
    Aihe