![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Runtime Error 216 - что это за ошибка!? [D5]
Uran © (2004-10-13 09:36:00)Работаю с большими объемами данных в Memo. В алгоритме все впорядке, проверял ... Но не могу понять, почему иногда программа просто вываливается ... Acces violation .... потом Runtime Error 216 .. и никак не могу поймать закономерность из за чего вываливается ... Интуитивно конечно догадываюсь что с памятью как то неправильно обращаюсь ...Мастера , подскажите на что мне нужно обратить внимание!?
Amoeba (2004-10-13 13:47:00) [1]
> Uran (13.10.04 13:45) [5]
> Уточни пожалуйста
> range check error
> DecimalSeparator это свойства чего!?
Что, клавиша F1 отсутствует?
Uran (2004-10-13 13:45:00) [2]Уточни пожалуйста
range check error
DecimalSeparator это свойства чего!?
Семен Сорокин (2004-10-13 12:08:00) [3]Интуитивно конечно догадываюсь что с памятью как то неправильно обращаюсь
попробуй в отладчике пройтись - иногда помогает.
range check error = true?
по коду:
ttab:= TTable.Create(nil);
...
ttab.free;
ttab:= TTable.Create
try
...
finally
ttab.free
end;
while Pos('.', t) > 0 do
t[Pos('.', t)] := ',';
if length(t)>0 then Table4.findfield('Ntx').asfloat:=strtofloat(t)
else Table4.findfield('Ntx').asfloat:=0 ;
используй DecimalSeparator.
Uran (2004-10-13 10:58:00) [4]вот процедура на которой вылетает :(
procedure TForm5.CreateDB;
var
i,FilesCompressed: integer;
t,tt2: string;
ttab: Ttable;
begin
ttab:= TTable.Create(nil);
with ttab do
begin
DatabaseName := ExtractFilePath(ParamStr(0)); (* alias *)
TableName := 'ph.db';
TableType := ttParadox ;
with FieldDefs do
begin
Add('id', ftInteger,0,false);
Add('IdOrganization', ftInteger,0,false);
Add('Phone', ftString,12,false);
Add('Description', ftString,250,false);
Add('Address', ftString,250,false);
Add('WorkTime', ftString,250,false);
Add('Ntx', ftFloat,0,false);
end;
{ create a calculated index }
end;
ttab.CreateTable;
ttab.free;
TAble4.Close;
TAble4.DatabaseName := ExtractFilePath(ParamStr(0)); (* alias *)
TAble4.TableName := 'ph.db';
TAble4.Open;
Table3.Open;
RzProgressBar2.TotalParts:=Table3.RecordCount;
TAble3.First;
for i:=1 to Table3.RecordCount do
begin
Table4.Insert;
Memo3.Lines.Add(inttostr(Table3.findfield('id').asinteger));
Table4.findfield('id').asinteger:=Table3.findfield('id').asinteger;
Table4.findfield('IdOrganization').asinteger:=Table3.findfield('IdOrganization').asinteger;
tt2:=Table3.findfield('Phone').asstring ;
if (length(tt2)>3) and (pos('0',tt2)=1) then
delete(tt2,1, 1 );
Table4.findfield('Phone').asstring:=tt2;
Table4.findfield('Description').asstring:=Table3.findfield('Description').asstring;
Table4.findfield('Address').asstring:=Table3.findfield('Address').asstring;
Table4.findfield('WorkTime').asstring:=Table3.findfield('WorkTime').asstring;
t:=Table3.findfield('Ntx').asstring;
while Pos('.', t) > 0 do
t[Pos('.', t)] := ',';
if length(t)>0 then Table4.findfield('Ntx').asfloat:=strtofloat(t)
else Table4.findfield('Ntx').asfloat:=0 ;
Table4.Post;
RzProgressBar2.PartsComplete:=i;
TAble3.Next;
end;
TAble4.Close;
end;
Johnmen (2004-10-13 10:22:00) [5]А что, поисковики в дауне ?
http://www.xdev.ru/dxgp/rgd_forums_e.asp?forumid=2&themeid=1328&from=0
Алхимик (2004-10-13 10:18:00) [6]Обращаешься к какой-то "левой" области памяти.
Код в студию.