|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2010, 17:07 | #1 |
Заблокирован
Регистрация: 30.06.2010
Сообщений: 104
|
range check error
Вот программа:
Код:
|
05.07.2010, 23:57 | #2 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
{$R+} - директива компилятора, включает проверку выхода значений за допустимые границы диапазона. Директива {$R-} соответственно выключает эту проверку. Директива является локальной (по моему это так называется ), т. е. действует на код расположенный между {$R+} и {$R-}.
Теперь, что касается массива K: K - у вас объявлен глобальный динамический массив (K: array of string)!!! Прежде чем использовать динамический массив необходимо прописать процедуру SetLength(K,n), где K - имя массива, n - длина массива. При этом необходимо помнить, что индексация динамических массивов начинается с 0. Тоже самое касается и массива P.
ICQ: 593-013-807
|
06.07.2010, 09:34 | #3 |
Заблокирован
Регистрация: 30.06.2010
Сообщений: 104
|
То есть нужно указать длину массива?Это ведь можно сделать ещё при объявлении массива? K:array [0..50] of string - так например?
Добавлено: Пытался использовать SetLength, но т.к. я ламер-самоучка понятия не имею как использовать эту процедуру .У меня выдает ошибку Incompatible types.Напишите, пожалуйста, как использовать эту процедуру в коде моей программы. И ещё раз добавлено:вот как я пытался написать: Код:
Последний раз редактировалось ChEaTeR-abc; 06.07.2010 в 14:10. |
06.07.2010, 21:33 | #4 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
Если вы знаете, что вам достаточно 51 элемента в массиве K, то можете объявить его статическим: в разделе var вместо K: array of string пишите
K: array [0..50] of string. Тоже самое можно сделать с массивом P. Процедура SetLength у вас написана вроде правильно. Проверьте внимательно, может у вас в место буквы g написана q!!! А еще лучше прописать эти процедуры в обработчике OnCreate формы. Т. е. при создании вашей формы будут созданы динамические массивы.
ICQ: 593-013-807
|
06.07.2010, 22:48 | #5 |
Заблокирован
Регистрация: 30.06.2010
Сообщений: 104
|
Уже пробовал создавать статические массивы.Та же ошибка.А директивы R- и R+ нужно использовать?
ЗЫ.На сайте с которого я качал функции для шифровки/расшифровки текст были ещё директивы Q+ и Q-.Что они делают и могло ли это както повлиять на появление ошибки? |
06.07.2010, 23:10 | #6 |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
походу файл с паролями не грузиться и мемо пустой
|
07.07.2010, 00:48 | #7 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
{$Q+} - контроль переполнения при выполнении над целыми операций +, -, *, Abs, Succ, Pred. Все эти дериктивы позволяют избежать ошибок, которые могут возникнуть в процессе работы приложения. Так что их лучше использовать.
ICQ: 593-013-807
|
07.07.2010, 05:00 | #8 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1)а если условие until не выполнится? тогда вылет за рамки массива(данная ошибка)
2)у вас в мемо точно есть две строки?ибо присвоение строк не добавляет их, а только может изменить существующую(данная ошибка) ЗЫ: 3) Цитата:
двойное слово - 4 байта(тип LongWord). Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
07.07.2010, 10:13 | #9 | ||
Заблокирован
Регистрация: 30.06.2010
Сообщений: 104
|
Цитата:
ЗЫ.Господа, мы эретеки.Так издеватся над Библией... 1)Проверял в дебаге - until выполняется 2)Вот с количеством строк в Мемо я не понял.Я ведь загружаю файл в него с помощью LoadFromFile.Насколько мне известно, в таком случае будет создаватся столько строк, сколько необходимо чтобы разместить файл.Или я ошибаюсь? Цитата:
|
||
07.07.2010, 13:05 | #10 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
Компонентом текстового файла является строка. Соответственно при его выводе в Memo будет столько же строк сколько и в файле. Но это только в том случае если свойство wordwrap у Memo установлено в false. В противном случае строки будут переноститься (если строка не помещается в Memo) и тогда кличество строк в Memo будет отличаться от количества строк в файле.
ICQ: 593-013-807
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Runtime Error '1004': Range of Object '_Global' Failed | panuta | Microsoft Office Excel | 6 | 17.05.2010 17:04 |
Range check error | MAcK | Общие вопросы Delphi | 2 | 24.03.2010 10:33 |
Check box | ruavia3 | Microsoft Office Excel | 6 | 17.11.2009 13:31 |
Использование CHECK | Golovastik | SQL, базы данных | 3 | 11.11.2009 20:27 |
ReDim и Subscript out of range (Error 9) | oldfatham | Microsoft Office Excel | 5 | 24.08.2009 18:32 |