Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Tstring list


Страницы:   1 2

alshtam ©   (2007-09-17 10:25:00) 

написал код и столкнулся с неожиданной проблемой:

function TConvertExel.loadXLS(items:integer):tstringlist;
var
 i:integer;
 s:string;
 str:tstringlist;
begin
 str:=tstringlist.Create;
 i:=1;
 s:=xl.cells[items,i];
 while not(s='') do
 begin
   result.Add(s);
   str.Add(s);
   i:=i+1;
   s:=xl.cells[items,i];
 end;
 str.Free;
end;
так работает, хотя str явно лишняя
function TConvertExel.loadXLS(items:integer):tstringlist;
var
 i:integer;
 s:string;
 str:tstringlist;
begin
 str:=tstringlist.Create;
 i:=1;
 s:=xl.cells[items,i];
 while not(s='') do
 begin
  result.Add(s);
  // str.Add(s);
   i:=i+1;
   s:=xl.cells[items,i];
 end;
 str.Free;
end;
так выдает access violation в строке result.Add(s);
не могу понять в чем дело, помогите пожалуста!


alshtam   (2007-09-17 10:39:00) [21]

Ohead:=TStringList.Create;
Ohead:=loadXLS(1);


alshtam   (2007-09-17 10:38:00) [22]

уважаемые если я result инициализирую, у меня память начинает терятся


{RASkov}   (2007-09-17 10:38:00) [23]

> Хотя зачем Free, я так и не понял.

Free ни в коем случае не нужно... иначе нафик она нужна если она(функция) не вернет результат :)
Тогда уж процедурой оформлять, раз результат не нужен...


Jeer   (2007-09-17 10:36:00) [24]


> str:tstringlist;
> begin
>  str:=tstringlist.Create;


А это зачем ?

Надо Result := TStringList.Create;


Anatoly Podgoretsky   (2007-09-17 10:36:00) [25]

> alshtam  (17.09.2007 10:25:00)  [0]

result не инициализирован


Desdechado   (2007-09-17 10:35:00) [26]

> так работает, хотя str явно лишняя
Вместо Str делай result := tstringlist.Create;, а Str выкини.
А то функция твоя ничего не возвращает.
Хотя зачем Free, я так и не понял.


{RASkov}   (2007-09-17 10:35:00) [27]

> [0] alshtam ©   (17.09.07 10:25)

Result нужно создать...
А у тебя ни в первом ни во втолром он не создается, а обращение внутри к нему есть... так, что оба варианта не рабочии...
а Str: TStringList явно лишняя в обоих случаях....


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо