[delphi] problem z TStrings

0

Witam,
dlaczego jeśli chcę wczytać nazwy sekcji to muszę zrobić:

var
i:tinifile;
ts: TStrings;
begin
i := tinifile.Create(INI_nazwa);
i.ReadSections(form1.ListBox1.Items);
ts := form1.ListBox1.Items;
...

, bo jeśli dam zaraz

i.ReadSections(ts)

to mi sie program wysypuje?
Dawałem na początek

ts:= TStrings.craeate

ale wtedy wyskakuje "Abstract Error"

0

no to nie korzystaj ze zmiennej TStrings tylko z TStringList

0
arhi napisał(a)

no to nie korzystaj ze zmiennej TStrings tylko z TStringList

Też błąd :/, wydaje mi się, że tzreba to jakoś zainicjalizować, tylko jak ??

0

Czy to jest takie trudne??:

var
i:tinifile;
ts: TStringList;
begin
i := tinifile.Create(INI_nazwa);
i.ReadSections(ts);
ts := form1.ListBox1.Items;
0
arhi napisał(a)

Czy to jest takie trudne??:

var
i:tinifile;
ts: TStringList;
begin
i := tinifile.Create(INI_nazwa);
i.ReadSections(ts);
ts := form1.ListBox1.Items;

nie, i nie o to mi chodzi :). Chodzi mi o to żeby

i.ReadSections(ts);

od razu dało mi w zmiennej ts

 coś z czym mogę pracować, a nie robić to przez bawienie się z ListBox'em (nie wiem czy dobrze to wytłumaczyłem :/)
0
var
  I: TIniFile;
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    // zakładam, że obiekt reprezentowany przez zmienną I jest utworzony
    I.ReadSections(SL);
    // tutaj robisz z SL wszystko, co chcesz
  finally
    SL.Free;
  end;

Abstract Error był pewnie dlatego, że klasa TStrings jest klasą abstrakcyjną. Jest często stosowana jako typ właściwości, ale naprawdę wskazuje na jakiś obiekt klasy potomnej (np. TStringList).

BTW przypisanie w stylu

ts := form1.ListBox1.Items; 

raczej nie spełni Twoich oczekiwań, a może przyprawić Cię o ból głowy - w przypadku destrukcji obiektu TS program może zacząć się krzaczyć, gdyż przy okazji zwolnisz obiekt ListBox1.Items. Dlaczego - sam pomyśl.

0

Dzięki, o to mi chodziło:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1