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

Вниз

Не работает Tstringlist :(   Найти похожие ветки 

 
ishicucu ©   (2007-02-11 22:59) [0]

Обявляю переменную типа Tstringlist, метод Add вызывает ошибку "чета с памятью", пробовал ставить в начале конструкто, не помогает.


 
Virgo_Style ©   (2007-02-11 23:01) [1]

как пробовал?


 
Efir ©   (2007-02-11 23:13) [2]

А не забыл:
твоя переменная := TStringList.Create


 
RASkov   (2007-02-11 23:20) [3]

> Не работает Tstringlist :(

Как не работает? А так попробуй:
var SL: TStringList;
....
SL:=TStringList.Create;
SL.Add("Добавилась");
ShowMessage(SL[0]);
SL.Free;
ShowMessage(SL[0]); // вызывает ошибку "чета с памятью"
SL.Add("Во косяк"); // вызывает ошибку "чета с памятью"
Работать должны мозги :)

> пробовал ставить в начале конструкто, не помогает.


 
RASkov   (2007-02-11 23:22) [4]

> [3] RASkov   (11.02.07 23:20)

Не на ту кнопку нажал, извеняюсь.

> > пробовал ставить в начале конструкто, не помогает.

Это как?


 
fd979 ©   (2007-02-11 23:39) [5]


> SL.Free;

И ты хочешь, чтобы после этого не вылетала ошибка?


 
RASkov   (2007-02-12 02:00) [6]

> [5] fd979 ©   (11.02.07 23:39)

Неудачно....
Это я намеренно вставил, ибо хотел показать автору, в каких случаях у него могла возникнуть такая ошибка....


 
RASkov   (2007-02-12 02:02) [7]

> [5] fd979 ©   (11.02.07 23:39)


> [6] RASkov   (12.02.07 02:00)
> > [5] fd979 ©   (11.02.07 23:39)

> Неудачно....

Не удачно - это мой пример неудачный :) Т.е. недостаточно прокомментирован... Сорри.


 
Loginov Dmitry ©   (2007-02-12 07:52) [8]

> SL.Free;
> ShowMessage(SL[0]); // вызывает ошибку "чета с памятью"
> SL.Add("Во косяк"); // вызывает ошибку "чета с памятью"


После такого ошибка будет выдана. Причем будет появляться стабильно. Это благодаря тому, что в TStringList в деструкторе обнуляется указатель. А вот если бы он не обнулялся, то рано или поздно ошибка все-равно где-нибудь проявилась, а вот где и когда - хз.


 
ishicucu ©   (2007-02-12 15:59) [9]

не такой я тупак, чтобы после метода free вызвать add
контструктор вызываю следующим образом:

sl.create;

может изза этого не работает, ща попробую как вы сказали


 
Amoeba ©   (2007-02-12 17:06) [10]


> контструктор вызываю следующим образом:
>
> sl.create;
>
> может изза этого не работает, ща попробую как вы сказали
>

Именно из-за этого!


 
Плохиш ©   (2007-02-12 17:15) [11]


> Loginov Dmitry ©   (12.02.07 07:52) [8]


> Это благодаря тому, что в TStringList в деструкторе обнуляется
> указатель.

Ну-ка, ну-ка, какой указатель "обнуляется"?


 
RASkov   (2007-02-12 17:19) [12]

> sl.create;

Таким образом ты выполнил "процедуру" Create у экземпляра класса, но так как память для нее(переменной) не распределена, то и впоследствии при обращении к методам или полям выскакивает ошибка доступа памяти. Память выделяется когда вызывают конструктор у класса а не у экземпляра класса.


 
Игорь Шевченко ©   (2007-02-12 17:20) [13]

Выпрямители подорожали видно.


 
Loginov Dmitry ©   (2007-02-12 17:34) [14]

> Ну-ка, ну-ка, какой указатель "обнуляется"?


Посмотри в реализацию.


 
Игорь Шевченко ©   (2007-02-12 17:42) [15]

Loginov Dmitry ©   (12.02.07 17:34) [14]

А если не трудно, кусочек из реализации в студию


 
Loginov Dmitry ©   (2007-02-12 18:12) [16]

procedure TStringList.SetCapacity(NewCapacity: Integer);
begin
 ReallocMem(FList, NewCapacity * SizeOf(TStringItem));
 FCapacity := NewCapacity;
end;

destructor TStringList.Destroy;
begin
 FOnChange := nil;
 FOnChanging := nil;
 inherited Destroy;
 if FCount <> 0 then Finalize(FList^[0], FCount);
 FCount := 0;
 SetCapacity(0);
end;


 
ishicucu ©   (2007-02-12 19:49) [17]

Все работает, спасибо.



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

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

Наверх




Память: 0.5 MB
Время: 0.036 c
4-1161168734
DevilDevil
2006-10-18 14:52
2007.03.04
TBitmap.Transparent


9-1145028173
grisme
2006-04-14 19:22
2007.03.04
Небо на OpenGL


15-1170677159
SvetaIp
2007-02-05 15:05
2007.03.04
Вышлите готовые БД?


2-1171223994
ishicucu
2007-02-11 22:59
2007.03.04
Не работает Tstringlist :(


15-1171273167
vasIZmax
2007-02-12 12:39
2007.03.04
Save.... Good