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

569

    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. Puoluebarometri: Marinin hallituksella 7 parasta mittaustulosta

      Orpon hallitusta pitää huonona 2/3 kansalaisista, joka on aika hyvin linjassa hallituspuolueiden yhteenlasketun kannatuk
      Maailman menoa
      66
      4002
    2. Pride-rautu korvaamaan kirjolohi

      Kekkosen saatanan tunari meni muuttamaan aikoinaan sateenkaariväen kalan nimen. Unkarin vallankumouksen innoittamana n
      Maailman menoa
      15
      2117
    3. Purran aikaisemmat kannattajat siirtyneet Lindtmanin leiriin

      Melkoinen muutos on käynnissä Suomen politiikan kentällä. Tulevista häviäjistä on hirmuinen kiire päästä ajoissa voittaj
      Maailman menoa
      7
      1875
    4. Olen parasta a-luokkaa

      Kerron nyt teille, että olen äärimmäisen utelias, ja iitserakas ihminen. Teen paljon aloituksia itseäni koskien ja tunge
      Sinkut
      36
      1234
    5. "ARMEIJA JA POLITIIKKA TÄYTYY EROTTAA TOISISTAAN"!!!

      "MUUTEN EI TULE RAUHAA"!!!
      Maailman menoa
      27
      1209
    6. Se mua jotenkin harmittaa

      Et ko sulla ollu näin paljon selvästi mielenpäällä ollut kaikkea, kysymyksiä, neuvoteltavia asioita ja huolenaiheita, et
      Suhteet
      11
      963
    7. Shakki ja matti

      Toivoisin, että olisit läsnä ja tukena arjessani. Et edes tietäisi, että se olen minä tässä ja täällä vain. Olisi asioit
      Ikävä
      70
      828
    8. Oot tosi epätavallinen

      ja erikoinen nainen. Tykästyä ikihyviksi sun kaltaiseen naiseen, mitä tästä pitäis edes ajatella.
      Ikävä
      43
      819
    9. Tuntuu että sulla on uusi ihastus

      Toivottavasti vain harhailen.
      Ikävä
      39
      727
    10. Peuran liikenne ajovaloissa

      Haittaako se jos bussit on romuja ja käyttökiellossa? https://www.ilkkapohjalainen.fi/avi-loysi-kahdeksan-puutetta-kaup
      Ähtäri
      24
      674
    Aihe