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

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

Чудеса с TStrings?


Страницы:   1 2

чудак ©   (2004-07-02 16:56:00) 

Код:
var LBItems:TStrings;
begin
LBItems.add('rerer');
end;

Вылетает с ошибкой "access violation....". Подскажите пожалуйста новичку, что я сделал не так?


Marser   (2004-07-03 01:26:00) [1]


> Anatoly Podgoretsky ©   (02.07.04 20:36) [28]
> Ну будет неприятно немного

:-)
Потом пройдет


> чудак

Главный совет - вместо абстрактного TStrings использовать TStringList - прикладного его потомка.


GuAV   (2004-07-03 00:10:00) [2]

jack128 ©   (02.07.04 20:42) [30]
А ты еще забыл сказать, что FreeAndNil - тоже излишество, если List создается только здесь. А он имхо ваще тут за локальную переменную.


Style   (2004-07-03 00:01:00) [3]

Я бы назвал эту ветку так:
Чудак и TStrings ;)


Тимохов   (2004-07-02 23:16:00) [4]

Igorek ©   (02.07.04 19:36) [26]
учите числа с плавующей точкой, с советами пока погодите :)))))))))))


jack128   (2004-07-02 20:42:00) [5]


> try
>  List := TStringList.Create;
>  ... - юзаем List
> finally
>  FreeAndNil(List);
> end;

во первых строку List := TStringList.Create; - нужно вынести за пределы блока try finally
List := TStringList.Create;
try
 // ... - юзаем List
finally
 FreeAndNil(List);
end;

во вторых всё, что ты говорил про FreeAnNil будет работатьь только если дополнить код условием
if not Assigned(List) then
 List := TStringList.Create;

а это уже излишества..


Mim1   (2004-07-02 20:42:00) [6]


> [26] Igorek ©   (02.07.04 19:36)

Я смотрю вы совсем не учитесь. Вас в такие ошибки уже тыкали  :(.


Anatoly Podgoretsky   (2004-07-02 20:36:00) [7]

Ну будет неприятно немного


Fay   (2004-07-02 19:44:00) [8]

2Igorek ©   (02.07.04 19:36) [26]

> try
>  List := TStringList.Create;
>  ... - юзаем List
> finally
>  FreeAndNil(List);
> end;

А если List := TStringList.Create;не прокатит?


Igorek   (2004-07-02 19:36:00) [9]

А я бы рекоммендовал вместо Free использовать FreeAndNil. Даже для локальных переменных. Даже если они потом переедут куда-то код не будет сбоить.

Кроме того вроде надо так:
try
 List := TStringList.Create;
 ... - юзаем List
finally
 FreeAndNil(List);
end;


чудак   (2004-07-02 18:42:00) [10]

Romkin, спасибо, Вы опередили мой вопрос :) Тож задумался об удалении объекта )


Romkin   (2004-07-02 18:08:00) [11]

Таки я бы рекомендовал дополнить код Free ;)
List := TStringList.Create;
try
 ... - юзаем List
finally
 List.Free;
end;


Тимохов   (2004-07-02 17:59:00) [12]


> Начался флейм

вы его и начали :(((


чудак   (2004-07-02 17:57:00) [13]

всёёёё. Начался флейм:) Всем пожимаю руку и желаю удачи. Пока.


чудак   (2004-07-02 17:57:00) [14]

Спасибо конечно, но я только совсем начинающий программист. Даже не программист в понятии "кодер", а так - "погулять вышел":) Если реши посвятить этому свою жизнь, тогда буду разбираться в тонкостях.


han_malign   (2004-07-02 17:42:00) [15]

> Лет через 10.. научусь:)
Project Options...->Linker->Map file=Detailed

> "at adress 0043E238..."
00400000 - Image base - отнимаем
остается 0003E238
в SysUtils: code start set by linker to $1000
остается 0002D238

и ещем этот или близкий к нему адрес(что чаще) в, к примеру:
Project1.map:
.................

Line numbers for Unit1(Unit1.pas) segment .text

  278 0001:000066F0   279 0001:000066FC   280 0001:00006707   281 0001:00006710
  282 0001:00006728   284 0001:0000673A   285 0001:0000674A   287 0001:00006760
  313 0001:00006764   314 0001:00006770   315 0001:0000677B   316 0001:00006786
  317 0001:0000678C   318 0001:00006794   320 0001:0000679A   321 0001:000067A2
  322 0001:000067B2   323 0001:000067BA   324 0001:000067BD   325 0001:000067C0
  318 0001:000067C3   327 0001:000067C9   331 0001:000067D0   332 0001:000067EF
  333 0001:000067F3   334 0001:000067F9   335 0001:00006822   336 0001:00006833
  337 0001:00006868   341 0001:0000686C   342 0001:00006875   343 0001:00006886
  344 0001:0000689E   348 0001:000068A4   349 0001:000068C6   350 0001:000068D1
  351 0001:000068D7   352 0001:000068E9   350 0001:000068EC   354 0001:000068F2
  355 0001:00006902   356 0001:0000692A   360 0001:00006930   361 0001:00006952
  362 0001:0000695D   363 0001:00006963   364 0001:00006975   362 0001:00006978
  366 0001:0000697E   367 0001:000069AF   385 0001:000069B4   386 0001:000069D6
  387 0001:000069E2   388 0001:00006A0B   389 0001:00006A3C   390 0001:00006A4F
  391 0001:00006A83   394 0001:00006A88   395 0001:00006A94   396 0001:00006AA5
  397 0001:00006AB2   398 0001:00006AD2   399 0001:00006AF3   402 0001:00006AF8
  403 0001:00006B04   404 0001:00006B11   405 0001:00006B31   406 0001:00006B42
  407 0001:00006B63   408 0001:00006B86   411 0001:00006B8C   412 0001:00006B98
  413 0001:00006BA5   414 0001:00006BBD   415 0001:00006BDA   418 0001:00006BE0
  419 0001:00006BED   420 0001:00006BFA   421 0001:00006C21   422 0001:00006C48
  423 0001:00006C6F   424 0001:00006C8A   427 0001:00006C90   428 0001:00006C9C
  429 0001:00006CA9   430 0001:00006CC4   431 0001:00006CDF   432 0001:00006CFA
  433 0001:00006D15   434 0001:00006D30   435 0001:00006D4B   436 0001:00006D66
  437 0001:00006D7C   441 0001:00006D80   442 0001:00006D8F   444 0001:00006D9F
.................


чудак   (2004-07-02 17:40:00) [16]

"статья за это предусматривает пожизненный срок"
???

"если для тебя Делфи-разработка - не более чем сиюсекундное развлечение или необходимость отмазки в вузовском курсе"
Это не так.


Digitman   (2004-07-02 17:26:00) [17]


> чудак   (02.07.04 17:16) [17]


если для тебя Делфи-разработка - не более чем сиюсекундное развлечение или необходимость отмазки в вузовском курсе  - на 10 лет не можешь расчитывать ни ты ни мы ...статья за это предусматривает пожизненный срок


чудак   (2004-07-02 17:16:00) [18]

"к тому же по адресу можете найти команду, которая вызвала исключение."
Лет через 10.. научусь:)


Anatoly Podgoretsky   (2004-07-02 17:15:00) [19]

А чудо где?
Вот когда заработает, тогда и будет чудо.


чудак   (2004-07-02 17:15:00) [20]

Работает!!!!!!!!!!
все такие "добрые"... но спасибо, что помогли.


Страницы:   1 2

Наверх

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