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

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

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]

Обращаешься к какой-то "левой" области памяти.
Код в студию.


Наверх

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