Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

Чудеса с TStrings?   Найти похожие ветки 

 
чудак   (2004-07-02 16:56) [0]

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

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


 
Тимохов ©   (2004-07-02 16:56) [1]

объект не создал

lbitems := tstringlist.create();


 
Reindeer Moss Eater ©   (2004-07-02 16:57) [2]

Не прочитал хелп


 
Тимохов ©   (2004-07-02 16:57) [3]

на плюсах небось наинали? :)))


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


> Вылетает с ошибкой "access violation....".


малацца !... нечего читать незнакомые буквы, следующие в тексте "ошибки" после многоточия... не царское это дело


 
Digitman ©   (2004-07-02 17:03) [5]

особор радует слово "Вылетает"

сразу чувствуется, что равно как и у меня в практике у автора из СиДи-привода вылетает диск ...


 
чудак   (2004-07-02 17:07) [6]

Господа, хорош издевацца над маленькими! :)

"малацца !... нечего читать незнакомые буквы, следующие в тексте "ошибки" после многоточия... не царское это дело"
Ну а что даст продолжение "at adress 0043E238..."?

"lbitems := tstringlist.create();"
Как ни странно - так делал (только без пустых скобочек)... Тогда тоже ошибка: "Abstract Error".


 
Reindeer Moss Eater ©   (2004-07-02 17:08) [7]

"lbitems := tstringlist.create();"
Как ни странно - так делал (только без пустых скобочек)... Тогда тоже ошибка: "Abstract Error".


Не врать.
Ты делал
tstrings.create();"


 
Romkin ©   (2004-07-02 17:08) [8]

чудак  (02.07.04 17:07) [6] Не так ты делал. Смотри внимательно :)))


 
Тимохов ©   (2004-07-02 17:08) [9]


> "lbitems := tstringlist.create();"
> Как ни странно - так делал (только без пустых скобочек)...
> Тогда тоже ошибка: "Abstract Error".

гоните :)))
вы делали tstrings.create();


> Ну а что даст продолжение "at adress 0043E238..."?

например, что ошибка в вашем exe, а не в системной библиотеке user32.dll скажем.


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

Ничего я не гоню, говорю как есть:( И не сишник я.. так, самую малость:)

"procedure TForm1.FormShow(Sender: TObject);
var LBItems:TStrings;
begin
LBItems:=TStrings.Create();
LBItems.add("rerer");
end;"

Abstract error (тоже не в системной dll, а в ехе) в строке " LBItems.add("rerer");"

"например, что ошибка в вашем exe, а не в системной библиотеке user32.dll скажем."
Он так и пишет - ошибка в exe.


 
Тимохов ©   (2004-07-02 17:14) [11]


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

глаза протри, чудак:))))


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

опс.. там ж tstringLIST... прошу прощения, действительно гнал, выходит:( Пошёл пробовать.


 
Digitman ©   (2004-07-02 17:14) [13]


> чудак   (02.07.04 17:07) [6]
> Господа, хорош издевацца над маленькими! :)


"маленький" - не повод для оправдания отсутствия желания шевелить извилинами, когда делают намек


> что даст продолжение


даст повод сосредоточиться на изучении  пунктов главногго меню среды, где есть направление для поисков ответа на вопрос, что есть "0043E238" и как это реально может помочь в поисках ошибки


 
Тимохов ©   (2004-07-02 17:14) [14]


> Он так и пишет - ошибка в exe.

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


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

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


 
Anatoly Podgoretsky ©   (2004-07-02 17:15) [16]

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


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

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


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


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


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


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

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

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


 
han_malign ©   (2004-07-02 17:42) [20]

>Лет через 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:57) [21]

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


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

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


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


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

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


 
Romkin ©   (2004-07-02 18:08) [24]

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


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

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


 
Igorek ©   (2004-07-02 19:36) [26]

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

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


 
Fay ©   (2004-07-02 19:44) [27]

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

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

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


 
Anatoly Podgoretsky ©   (2004-07-02 20:36) [28]

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


 
Mim1 ©   (2004-07-02 20:42) [29]


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

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


 
jack128 ©   (2004-07-02 20:42) [30]


> 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;

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


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

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


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

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


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

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


 
Marser ©   (2004-07-03 01:26) [34]


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

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


> чудак

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



Страницы: 1 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.04 c
1-1088808759
GuAV
2004-07-03 02:52
2004.07.18
ShellTreeView


1-1088655081
ORMADA
2004-07-01 08:11
2004.07.18
Пакеты


1-1089096014
Аноним
2004-07-06 10:40
2004.07.18
TListView


14-1088489953
Nikolay M.
2004-06-29 10:19
2004.07.18
Работа IT-шника в софтовой компаниий vs работа на бизнес - ?


1-1089118161
DenisWW
2004-07-06 16:49
2004.07.18
как быстренько получить текст из RichEdit в формате HTML