2011-08-30 18 views

cevap

38

S:How can i add an integer to the object portion of a stringlist item, using AddObject?

A:How can a retrieve the integer back from a object property of stringlist item?

A: Dökme için sadece TObject

List.AddObject('A string',TObject(1)); 

S tamsayı değeri dökümHow do i free all objects and list when done?

A: Nesne Değeri

AValue := Integer(List.Objects[i]); 

Q tamsayı Belleği atama değildir çünkü nesne listesini serbest gerekmez. Bu nedenle, yalnızca TStringList'un Free prosedürünü çağırın.

, sadece bir cevap yazıyordu

{$APPTYPE CONSOLE} 

uses 
    Classes, 
    SysUtils; 


Var 
    List : TStringList; 
    i : Integer; 
begin 
    try 
    List:=TStringList.Create; 
    try 
     //assign the string and some integer values 
     List.AddObject('A string',TObject(1)); 
     List.AddObject('Another string',TObject(100)); 
     List.AddObject('And another string',TObject(300)); 

     //Get the integer values back 

     for i:=0 to List.Count - 1 do 
     Writeln(Integer(List.Objects[i])); 

    finally 
     //Free the list 
     List.free; 
    end; 
    except 
    on E:Exception do 
     Writeln(E.Classname, ': ', E.Message); 
    end; 

    Readln; 
end. 
+1

Sen beni alt bu örnek uygulaması deneyin, ama bunun yerine seninkini upvote edeceğiz. OP'ye son bir not olarak, TStringList'in dahili işaretçi listesini serbest bırakması ve herhangi bir nesne oluşturmadığınızdan, yalnızca listede bulunan tam sayılar olduğundan, liste dışında herhangi bir nesneyi açıkça serbest bırakmanız gerekmez. RRUZ'un gösterdiği şey budur, sadece TSTringList'i serbest bırakır. –

+0

@RRUZ - +1 Vay canına! Bence sadece anlamaya çalıştığım büyük bir sorunu çözdün. Veritabanı arama değerleri için ID/Value çiftlerini kullanmayı seviyorum. Yani, eğer yukarıdakileri doğru olarak anlarsam, bir açılır listeden List.Strings [i] değerini (değer kısmı) görüntüleyebilir ve veritabanındaki ForeignKey Kimliği olarak ilgili Tamsayıyı (List.Objects [i]) kullanabilirim. –

+0

@IElite, Hassas ve dinamik aralığın çok önemli olmadığı (Delphi 'tekli türü 4 bayttır ve bir işaretçiye yazım olabilir) kayan nokta değerlerinin bir listesini saklamak için benzer bir numara kullandım. Eğer dizeleri yoksa ve tamsayı/floatlar depolamak istediğinizde TList kullanabilirsiniz. – rossmcm

İlgili konular