![]() |
|
#1
|
|||
|
|||
![]() Есть два файла по 400 млн. значений,пытаюсь загрузить их в два динамических массива но при нажатии кнопки загрузка вылетает эта ошибка Range Check Error. Может что то с памятью надо делать?
Код:
procedure LoadData(fn:string); begin AssignFile(f,fn);//Подключаем файл Reset(f);//Открываем файл SetLength(data,count);//Задаём размер массива data d:=round(count/100);//Задаём шаг a:=d; Form1.Label5.Caption:='Please,wait'; Form1.Gauge1.Progress:=0;//Обнуляем Gauge1 Form1.Gauge1.Show;//Показываем Gauge1 for i:=1 to count do//Цикл считывания строк из файла begin CheckAbort;//Проверяем нажатие кнопки закрытия программы Readln(f,buf);//Считываем строку из файла и помещаем в buf if i=a then//Условие обновления Gauge1 begin Form1.Gauge1.Progress:=Form1.Gauge1.Progress+1; a:=a+d;//Задаём значение проверки для следующего обновления Gauge1 end; ps:=pos('.',buf);//Ищем в строке buf символ '.' и сохраняем позицию в ps if ps=0 then//Условие проверки числа; если '.' нет, то выполняем begin buf:=buf+',0';//добавляем к числу ',0' end else//Заменяем '.' на ',' begin num:=copy(buf,1,ps-1);//Сохраняем символы из buf в num до точки num:=num+',';//Добавляем к num символ ',' num:=num+copy(buf,ps+1,length(buf)-ps);//Сохраняем символы из buf в num после точки end; data[i-1]:=StrToFloat(num);//Конвертируем из строки в число и сохраняем в массив end; CloseFile(f); Form1.Gauge1.Hide;//Прячем Gauge1 MAD: Для оформления кода используем тег code а не quote Последний раз редактировалось M.A.D.M.A.N., 25.02.2013 в 22:21. |