![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чудеса с TStrings?
чудак © (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]Работает!!!!!!!!!!
все такие "добрые"... но спасибо, что помогли.