IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Проблемма с типизированным файлом, Не сохраняется результат
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Доброй ночи уважаемые форумчане!!! Пишу программу, что-то наподобие базы данных, сама программа работает номально, а вот при сохранении результата в типизированный файл возникла проблама.

Сохранение происходит следующим образом:



procedure TForm1.N2Click(Sender: TObject); {save}
type
zapis=record
mas1:array[1..4,1..3] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;
var
s:zapis;
f:file of zapis;
fname:string;
a,b:integer;
begin
savedialog1.InitialDir:=getcurrentdir;
SaveDialog1.Title:='Сохранить в файле';
SaveDialog1.Filter :='Файлы базы данных |*.bd';
SaveDialog1.DefaultExt:='bd';
if SaveDialog1.Execute then
begin
fname:=SaveDialog1.FileName;
AssignFile(f,fname);
Rewrite(f);
reset(f);
s.kolvo_chel:=stringgrid1.rowcount-2;
write(f,s);
for a:=1 to stringgrid1.RowCount-2 do
begin
for b:=1 to stringgrid1.ColCount-1 do
begin
s.mas1[b,a]:=stringgrid1.Cells[b,a];
write(f,s);
end;
end;

closefile(f);
end;

end;




Проблема заключается в том, что когда сохраняю небольшое количество данных в файл все сохраняет нормально, но вот если попробывать ввести например 100 записей то вылетает ошибка.

Сама программа

Прикрепленный файл  Прога.rar ( 217.87 килобайт ) Кол-во скачиваний: 239


Помогите разобраться с данной проблемой, заранее благодарю.

Сообщение отредактировано: ninja -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(ninja @ 26.11.2009 1:06) *
вылетает ошибка.

какая?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Ошибка такая:

Код
Access violation at address 00402DC9 in module 'Project1.exe'. Write of address 20E0F2F5


Сообщение отредактировано: ninja -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Проблема решена smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Ты вылетаешь за пределы массива, неужели не видно? Смотри:
Цитата
zapis=record
mas1:array[1..4,1..3] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;

Запомнил, какие индексы могут быть у mas2? А теперь см. сюда:
Цитата
        for a:=1 to stringgrid1.RowCount-2 do
begin
for b:=1 to stringgrid1.ColCount-1 do
begin
s.mas1[b,a]:=stringgrid1.Cells[b,a];
write(f,s);
end;
end;
И что будет, если RowCount больше 12? Что будет, если ColCount больше 4?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Да Вы правы, в данном примере я вылетаю за пределы массива.

type
zapis=record
mas1:array[1..4,1..3] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;


Но, если поменять значение например вот так:

type
zapis=record
mas1:array[1..4,1..100] of string[20];
mas2:array[1..3,1..10] of integer;
kolvo_chel:integer;
flag:boolean;
end;


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

Исправил так:

type
zapis=record
flag:boolean;
kolvo_chel:integer;
zapici:string[20];
vznoci:string[10];
data:string[2];
end;


Сообщение отредактировано: ninja -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 16:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name