Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 1
Регистрация: 05.12.2010
Сообщений: 21
1

Несколько ошибок разом. Касательно памяти.

25.05.2011, 15:01. Показов 2395. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый всем. Проблема следующая: при компиляции программы вылетают ошибки:
1)"Project Project1.exe raised exception class EReadError with message 'List capacity out of bounds (%d)'.
2)"Project Project1.exe raised exception class EReadError with message 'Property is read-only'.
3)'Stack overflow' -> Access violation.

Погуглил.
Увеличил размер стека до максимума.
Убрал из процедур форм вызовы тех процедур, которые ещё не созданы\уже разрушены.
В целях экономии памяти в процедурах прописывал form*.destroy вместо form*.close\form*.hide
Проверил нет ли рекурсивных процедур, либо зацикленных операций.
Ни в одной процедуре не описан в качестве переменной массив. Его как переменной не существует(если не считать grid).

Программа пока не содержит ни одной серьёзной процедуры - в основном только ссылки на другие формы и проверки.
Вот те немногие процедуры, которые существуют.
2 процедуры поиска и 2 процедуры авторизации.

Я в печали... В чём проблема - не соображаю.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button4Click(Sender: TObject);
var
f:string;
begin
f:=form1.Edit1.text;
with form1.adoQuery1 do begin
form1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.Active :=false;
ADOQuery1.SQL.LoadFromFile('select * From " guns " WHERE +item+ like "' +f+ '%"');
ADOQuery1.Active :=true;
open;
end;
end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:string;
begin
i:=form1.RadioGroup1.ItemIndex;
case i of
0 : s:='Автоматическое';
1 : s:='Полуавтоматическое';
2 : s:='Неавтоматическое';
3 : s:='Аксессуары';
4 : s:='Комплектующие';
end;
with form1.adoQuery1 do begin
form1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.Active :=false;
ADOQuery1.SQL.LoadFromFile('select * From " guns " WHERE +type+ like "' +s+ '%"');
ADOQuery1.Active :=true;
open;
end;
end;
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm3.Button1Click(Sender: TObject);
begin
if form3.Edit2.Text='993' then
begin;
form3.close;
form6.show;
end;
if form3.Edit2.Text<>'993' then form7.show;
end;
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm11.Button1Click(Sender: TObject);
begin
  if (form11.Edit1.Text='vansant') and (form11.Edit2.Text='993') then
begin;
form11.close;
form10.show;
end;
if (form11.Edit1.Text<>'vansant') and (form11.Edit2.Text<>'993') then form7.show;
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2011, 15:01
Ответы с готовыми решениями:

Утечка памяти и несколько ошибок в дебаггере
Вообщем , возможно где-то есть утечка памяти. Из-за которой программа на каком-то количестве...

Несколько вопросов, касательно выбора хдд
Помогите определится в двух вещах: Что важно при выборе жесткого диска (цена, бренд, гарантия,...

Разъясните несколько пунктов касательно ббф и бмф
Здравствуйте.Есть несколько вопросов, которые не получается нагуглить. 1)Главная часть бмф,...

Закачать разом несколько файлов через QNetworkAccessManager
Через QNetworkAccessManager::post() можно отправлять на HTTP-сервер файлы по одному. А можно ли...

11
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
25.05.2011, 15:27 2
У Вас по всем признакам зацикливание
0
0 / 0 / 1
Регистрация: 05.12.2010
Сообщений: 21
25.05.2011, 15:29  [ТС] 3
Так то оно так. Да вот только ему появиться неоткуда. Это все процедуры, которые могли бы хоть что-то сделать.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
25.05.2011, 15:32 4
Delphi
1
ADOQuery1.SQL.LoadFromFile('select * From " guns " WHERE +item+ like "' +f+ '%"');
Это что за чудо-юдо О_о
Вы, наверное хотели сделать так :

ADOQuery1.SQL.Text := 'select * From guns WHERE+item+like '+QuotdStr(f+ '%');
ADOQuery1.Open;

Добавлено через 1 минуту
QuotedStr
0
0 / 0 / 1
Регистрация: 05.12.2010
Сообщений: 21
26.05.2011, 06:40  [ТС] 5
Справился с проблемой написанием программы с нуля.
Теперь вылетает одна оч неприятная ошибка в процедуре поиска. Не могли бы вы помочь исправить.
Говорю заранее - это оч глупый вариант поиска, но мне он почему то приглянулся.
Delphi
1
2
3
4
5
6
7
8
procedure TForm6.Button1Click(Sender: TObject);
var
find:string[12];
begin
find:=form6.Edit1.Text;
form6.ADOTable1.Filter:=find;
form6.Panel1.Visible:=true;
end;
в панели собственно находятся гриды для отображения найден... отфильтрованного. в чём фейл плз скажите:/
[quota]First chance exception at $7C812AFB. Exception class EOleException with message 'Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом'. Process Project2.exe (472)[/quota]
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.05.2011, 10:20 6
Не вдаваясь в обсуждения "оптимальности" поиска..
Фильтрация делается 2-мя способами:

1) Св-во Filter.
В это св-во записывается SQL-выражение условия, например FIO LIKE 'Иванов%' AND VOZRAST BETWEEN 18 AND 22:

Table.Filtered := false;
Table.Filter := 'FIO LIKE ''Иванов%'' AND VOZRAST BETWEEN 18 AND 22';
Table.Filtered := true;

Проверить корректность подставляемого выражения очлегко - для этого дстаточно в любом скл-эксплорере написать
SELECT * FROM TABLE
WHERE <сюда занести ваши условия из Filter>
Если запрос выполнится правильно смело запускайте код на выполнение

2) Событие OnFilterRecord
В обработчике этого события пишете

with DataSet do
Accept = (Copy(AnsiUpperCase(FieldByName('FIO').AsString),1,6)='Иванов') and
((FieldByName('FIO').AsInteger>=18) and (FieldByName('FIO').AsInteger<=22));

Добавлено через 1 минуту
with DataSet do
Accept = (Copy(AnsiUpperCase(FieldByName('FIO').AsString),1,6)='Иванов') and
((FieldByName('VOZRAST').AsInteger>=18) and (FieldByName('FIO').AsInteger<=22));

Добавлено через 46 секунд
with DataSet do
Accept = (Copy(AnsiUpperCase(FieldByName('FIO').AsString),1,6)='Иванов') and
((FieldByName('VOZRAST').AsInteger>=18) and (FieldByName('VOZRAST').AsInteger<=22));

0
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
26.05.2011, 12:52 7
'Автоматическое';'Полуавтоматическое';'Неавтоматическое';'Аксессуары'; 'Комплектующие';- вынести в отдельную таблицу БД.
0
0 / 0 / 1
Регистрация: 05.12.2010
Сообщений: 21
26.05.2011, 14:14  [ТС] 8
2 harmless
хм... идея. но слишком много гемора. трабл в том просто, что я просто напросто не умею делать sql запросы вообще поэтому вот так вот извращаюсь.
2 MsGuns
ниодин вариант не подошёл. ругается что переменные перекрывают друг дружку... а вот какие показывать увы не хочет(
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.05.2011, 14:37 9
Тогда эта.. в дворники, там всегда дефицит рабочих рук
0
0 / 0 / 1
Регистрация: 05.12.2010
Сообщений: 21
26.05.2011, 16:20  [ТС] 10
не, дворники эт не мое
А проблему решил.
Я подрубил tquery и... Пришлось таки составить sql запрос... Ну не люблю я их
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.05.2011, 16:47 11
Delphi
1
Ну не люблю я их
Вы просто не умеете их готовить (с)
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
26.05.2011, 17:35 12
Цитата Сообщение от VanSant Посмотреть сообщение
Пришлось таки составить sql запрос... Ну не люблю я их
Либо придется полюбить, либо подумать о предложении MsGuns
0
26.05.2011, 17:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2011, 17:35
Помогаю со студенческими работами здесь

Можно ли вставить разом сразу несколько значений в массив ?
Здравствуйте, вот такая проблема, можно ли вставить сразу несколько значений в массив, т.е Пример...

Несколько ошибок
39 ошибок, связаны со string, а также с переменными height и weight. string was not declared in...

Несколько разных ошибок
Доброго времени суток, в общем, ситуация следующая: Есть компьютер, который уже три месяца...

Устранить несколько ошибок
Привет всем! Перевел тут код с VB.NET на C# (Требование сверху, им там легче в C# копаться), но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru