0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
1 |
|
15.03.2017, 18:15. Показов 22844. Ответов 14
Создаю проект. Самый обычный.
__________________
0 |
5445 / 4269 / 1375 Регистрация: 14.04.2014 Сообщений: 19,207 Записей в блоге: 19 |
|
15.03.2017, 22:34 |
2 |
ошибка в проекте
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
15.03.2017, 23:06 [ТС] |
3 |
Не совсем поняла «пока ничего не изменится».
0 |
пофигист широкого профиля 4602 / 3062 / 850 Регистрация: 15.07.2013 Сообщений: 17,668 |
|
16.03.2017, 01:53 |
4 |
Программа в архиве. А она не компилируется. Не хватает модуля ChangePassword
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
16.03.2017, 01:56 [ТС] |
5 |
Да, извиняюсь, не тот вариант работы отправила.
0 |
пофигист широкого профиля 4602 / 3062 / 850 Регистрация: 15.07.2013 Сообщений: 17,668 |
|
16.03.2017, 02:44 |
6 |
Вот этот запускается. Увы. Он тоже не запускается. Ибо не находит файлы Data.DB, Data.Win.ADODB. Не по теме: Какой мусор и с какой помойки вы нам предлагаете?
0 |
5445 / 4269 / 1375 Регистрация: 14.04.2014 Сообщений: 19,207 Записей в блоге: 19 |
|
16.03.2017, 09:15 |
7 |
все запускается. просто по составным именам модулей видно, что версия XE+
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
16.03.2017, 19:37 [ТС] |
8 |
Ошибка появляется в разные моменты работы (именно с незапущенным приложением). Иногда это добавление элемента, иногда изменение св-в элемента, а иногда и просто так (допустим оставить открытым программу на некоторое время).
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
16.03.2017, 19:44 [ТС] |
9 |
Какой мусор и с какой помойки вы нам предлагаете? Это как бы начало моего диплома.
Ибо не находит файлы Data.DB, Data.Win.ADODB. Запускается не в Delphi, а в RAD Studio.
0 |
5445 / 4269 / 1375 Регистрация: 14.04.2014 Сообщений: 19,207 Записей в блоге: 19 |
|
16.03.2017, 21:24 |
10 |
так у вас программа к ошибке никакого отношения не имеет возможно какие-то компоненты у вас стоят кривые при переустановке нужно полностью удалять следы предыдущих версий
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
16.03.2017, 22:13 [ТС] |
11 |
простой uninstall оставляет за собой тучу барахла Я удаляла через панель управления. Это тоже не подходит? Советуете опять переустановить студию?
0 |
500 / 346 / 200 Регистрация: 20.10.2016 Сообщений: 1,101 |
|
16.03.2017, 22:46 |
12 |
Возможно ли, что влияет то, что программа установлена не на диске С или какой-то конфликт с Delphi 7 (она тоже есть на ПК и тоже не на диске С)? У меня на D стоит 10.1 Berlin на С D7, это на работоспособность IDE никак не влияет.
Советуете опять переустановить студию? Пробуйте, только по новым путям/каталогам.
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
16.03.2017, 23:05 [ТС] |
13 |
Пробуйте, только по новым путям/каталогам. А удалять эту как? Через панель управления норм или какое-то стороннее ПО скачать?
0 |
5445 / 4269 / 1375 Регистрация: 14.04.2014 Сообщений: 19,207 Записей в блоге: 19 |
|
17.03.2017, 00:40 |
14 |
здесь на форуме советовали RevoUninstaller
0 |
Модератор 1436 / 1012 / 228 Регистрация: 31.05.2013 Сообщений: 6,645 Записей в блоге: 6 |
|
17.03.2017, 00:51 |
15 |
здесь на форуме советовали RevoUninstaller Я им и удалял. Потом заходил в папки ProgramFiles, AppData, ProgramData, и дочищал следы, если оставались. Добавлено через 2 минуты
или какой-то конфликт с Delphi 7 По умолчанию D7 устанавливается в папку Borland в ProgramFiles, а новые версии XExx — в папку Embarcadero в ProgramFiles. Они между собой никак не связаны.
0 |
← →
VitGun © ( 2004-11-19 19:30 ) [0]
Проблема вот в чем. При закрытии программы вываливается сообщение «Invalid pointer operation».
В программе есть динамический массив. Если не задавать ему длину и не создавать его элементы, то прога
закрывается нармально, но если создать, то «Invalid pointer operation». В собыии OnClose главной формы написал
где:
cap:array of real;
Прочитал в одной статье, что так массивы уничтожаються (aka Dispose для указателей в Pascal), но нифига не
помогает. что я не сделал? Где руки выпрямлять?
← →
wicked © ( 2004-11-19 19:47 ) [1]
а зачем ему nil присваивать. он и сам уничтожится.
← →
GLFox ( 2004-11-19 20:07 ) [2]
SetLength(YourDynamicArray,0);
← →
VitGun © ( 2004-11-19 20:07 ) [3]
2 wicked
Нифига. хоть присваивай nil, хоть не присваивай. все равно «Invalid pointer operation»
← →
VitGun © ( 2004-11-19 20:10 ) [4]
2 GLFox и это тож пробовал. те же яйца только в профиль.
← →
GLFox ( 2004-11-19 20:12 ) [5]
А еще какие поинтеры используешь?
← →
VitGun © ( 2004-11-19 20:19 ) [6]
Никаких. в том то и дело. Это единственный DynamicArray во всей проге.
← →
Anatoly Podgoretsky © ( 2004-11-19 20:20 ) [7]
У тебя ошибка в программе.
← →
VitGun © ( 2004-11-19 20:22 ) [8]
2 Anatoly Podgoretsky. Угу. Я догадался. вопрос в другом. где?
Если динаические массивы не использовать, то все ОК, если использовать — то трабл.
← →
DrPass © ( 2004-11-19 20:27 ) [9]
> Если динаические массивы не использовать,
Второй наводящий вопрос: а как ты их используешь?
.
Setlength(cap,len);
.
где len — некоторая переменная типа integer
.
for i:=0 to len do
begin
cap[i]:=something;
end;
.
← →
begin. end © ( 2004-11-19 20:40 ) [11]
> [10] VitGun © (19.11.04 20:39)
Ну вот видишь, как всё просто оказалось, всего-то надо заменить len на len — 1 (в заголовке цикла).
← →
Anatoly Podgoretsky © ( 2004-11-19 20:41 ) [12]
VitGun © (19.11.04 20:22) [8]
Да, да именно так, ошибка при работе с динамическими массивами, вот теперь когда способился привести хоть чуть кода, то это уже стало не предположением, а истиной. Ты выходишь за пределы массива, а контроль за этим явно отключил.
Для начала срочно в настройки компилятор, проштудировать их и до тех пор ни строчки кода или же пиши без ошибок.
← →
Anatoly Podgoretsky © ( 2004-11-19 20:43 ) [13]
begin. end © (19.11.04 20:40) [11]
Ну сдесь исправит, так в другом месте вылезет, надо не заплатки, а как минимум включить контроль за границами.
← →
Anatoly Podgoretsky © ( 2004-11-19 20:45 ) [14]
Сделай для начала так
SetLength(,2) затем на бумажке пишешь, вручную прокручивая цикл
I = ?
..
I = ?
и считаешь количество строк, затем сравниваешь с количеством строк массиса
← →
begin. end © ( 2004-11-19 20:45 ) [15]
> [13] Anatoly Podgoretsky © (19.11.04 20:43)
Ну это само собой, а также, ИМХО, лучше пользоваться в таких случаях не конкретной переменной, а High(cap).
← →
VitGun © ( 2004-11-19 20:47 ) [16]
2 Anatoly Podgoretsky
Уж извините..нет. За пределы массива я не выпадаю. Сие мне известно и контроль включен. Ошибка появляется при ЗАКРЫТИИпрограммы, а не во время выполнения.
← →
begin. end © ( 2004-11-19 20:48 ) [17]
> [16] VitGun © (19.11.04 20:47)
Какой недоверчивый, какая разница — во время выполнения или при закрытии, программа просто злопамятная, вот и ругается только в конце.
← →
VitGun © ( 2004-11-19 20:51 ) [18]
Хм.
Полтергейтс однако. len — 1 не помогло, а вот len-2 помогло.
← →
GLFox ( 2004-11-19 20:51 ) [19]
for i:=0 to len do
begin
cap[i]:=something;
end;
Данный код не может быть верным! Индексы в динамических массивах начинаются с НУЛЯ и заканчиваются на Length(YourArray)-1.
← →
VitGun © ( 2004-11-19 20:53 ) [20]
Блин. работает.
2 begin. end & Anatoly Podgoretsky — respect. Спасибо за помощь!
← →
Anatoly Podgoretsky © ( 2004-11-19 20:56 ) [21]
VitGun © (19.11.04 20:47) [16]
Ой не надо отпираться от горячего, ты бы уж не проводил свой код, а теперь краснеть надо за продолжающее развешивание лапшию
Кроме того ты выполнил домашнее задание в 14, сколько у тебя получилось?
← →
Anatoly Podgoretsky © ( 2004-11-19 20:58 ) [22]
begin. end © (19.11.04 20:45) [15]
Ну это способ писать без ошибок, особенно если к ней добавить еще и Low
← →
Palladin © ( 2004-11-19 20:59 ) [23]
> [16] VitGun © (19.11.04 20:47)
ты может быть сначала вникнешь прежде чем сопротивляться. не веди себя как ламер.
← →
VitGun © ( 2004-11-19 21:07 ) [24]
2 Anatoly Podgoretsky:
[14] пост не видел — сорри.
2 Palladin.
Да понял я в чем моя ошибка. Я то был уверен, что обращаюсь к верному кол-ву элементов массива, т.е ошибка была именно в цикле.
Ошибка: Invalid pointer operation
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Ошибка: Invalid pointer operation
procedure TForm1.Button2Click(Sender: TObject); var i, n : Integer; Point : array of.
Ошибка: Invalid pointer operation
Не подскажете как исправить ошибку при вычислении второй функции т.е У вылезает окно «Invalid.
Ошибка : Invalid pointer operation
При работе программы возникает данная ошибка ! Возможно она появляется при создании массива вот.
Ошибка: invalid pointer operation
Привет не могу вытащить настройки CheckBox1 из ini файла если CheckBox1.Checked:=true то выдает .
Исправить ошибку WINWORD.EXE в приложениях Office
WINWORD.EXE — это процесс Microsoft Word, указанный в диспетчере задач. Другие приложения Office, как exel, могут быть зависимы от процесса WINWORD.EXE. Некоторые пользователи сталкиваются с ошибкой в Windows 10, что этот процесс поврежден или отсутствует. Ошибки в контексте могут звучать по разному, но все они связаны с процессом WINWORD.EXE. Также стоит отметить, что при запуске приложения Excel или PowerPoint, вы также можете получить ошибку связанную с процессом WINWORD.EXE. Виновником ошибок может быть масса причина: повреждения пакета Office, профиль пользователя, сторонний антивирус, устаревший компонент, поврежденный файл или вредоносное ПО. Давайте разберем, что делать и как исправить ошибку приложения WINWORD.EXE в Windows 10.
Завершить процесс winword.exe
Нажмите Ctrl+Shift+Esc, чтобы открыть диспетчер задач. Далее найдите процесс WINWORD.EXE и щелкните по нему правой кнопкой мыши, после чего выберите завершить. Затем перезапустите приложение Office.
Запуск Word без макросов и дополнительных функций
Загрузите Word без макросов и посмотрите исправляет ли это ошибку. Нажмите сочетание клавиш Win + R и введите winword /m .
Чтобы Word не загружал свои надстройки, введите winword /a
Сбросить запись реестра Word по умолчанию
Сначала вам нужно завершить процесс WINWORD.EXE в диспетчере задач. Далее нажмите обратно Win+R и введите winword /r .
Сканирование на вирусы
Вирусы могут быть проблемой и выдавать ошибку. Воспользуйтесь антивирусным сканером , чтобы проверить систему на вирусы. Процесс WINWORD.EXE должен находиться на своем законном пути. Если он этот процесс находится по другому пути, то это вирус.
- C:Program Files (x86)Microsoft OfficerootOffice16
Вы можете нажать на этот процесс в диспетчере задать правой кнопкой мыши и выбрать «Расположение файла».
Ремонт офиса
Поврежденный пакет Office может выдавать различные ошибки. Откройте «Панель управления» > «Удаление программ», найдите Microsot Office и выделите его одним нажатием мыши, после чего нажмите сверху на кнопку «Изменить«. Будет запущен процесс восстановления программы, где выберите «Восстановление по сети» и далее следуйте инструкциям на экране.
I can’t seem to figure this one out. My program compiles and runs successfully, but during debugging only it pops up a message box saying «Invalid Pointer Operation» when shutting the program down. I have painstakingly checked all the FormCloseQuery and FormDestory events for any syntax or logical error. I found none and they execute as expected without any error.
When I do tell the compiler to break at Invalid Pointer Operation error, it doesn’t do anything but hangs up the program. At which point, I had to terminate or kill the process.
How do you figure this one out?
Thanks in advance,
Wolf
9,4947 gold badges62 silver badges105 bronze badges
asked Apr 11, 2012 at 20:04
10
An Invalid Pointer exception is thrown by the memory manager when it tries to free invalid memory. There are three ways this can happen.
The most common is because you’re trying to free an object that you’ve already freed. If you turn on FastMM’s FullDebugMode, it will detect this and point you directly to the problem. (But make sure to build a map file so it will have the information it needs to create useful stack traces from.)
The second way is if you’re trying to free memory that was allocated somewhere other than the memory manager. I’ve seen this a few times when passing a string from a Delphi EXE to a Delphi DLL that wasn’t using the shared memory manager feature.
And the third way involves messing around with pointers directly and probably doesn’t apply to you. If you try to FreeMem
or Dispose
a bad pointer that doesn’t refer to an actual block of memory allocated by FastMM, you’ll get this error.
It’s most likely the first one. Use FullDebugMode and you’ll find the source of the problem easily.
answered Apr 11, 2012 at 20:30
Mason WheelerMason Wheeler
81.5k49 gold badges272 silver badges474 bronze badges
2
Invalid pointer operations occur when you tell the Delphi memory manager to release memory that doesn’t belong to it. There are three ways that might happen:
- Freeing a pointer or object that has already been freed.
- Using
FreeMem
to free something that was allocated by some other memory manager (such asGlobalAlloc
orCoTaskMemAlloc
). - Freeing an uninitialized pointer. (This is distinct from freeing a null pointer, which is completely safe.)
Somewhere in your program, you are doing one of those things. The debugger has detected the exception thrown by the memory manager, so do some debugging. From the stack trace, you should be able to see which variable you’re trying to free. Check the rest of your program for other ways that variable is used.
Tools like MadExcept and Eureka Log can help you find double-free errors. They can keep track of where the pointer in question got allocated and where it was freed the first time, and that is sometimes enough information to figure out your mistake and stop freeing things multiple times.
answered Jan 18, 2013 at 15:33
Rob KennedyRob Kennedy
161k21 gold badges276 silver badges463 bronze badges
7
A 4th reason an invalid pointer operation can occur. I had two pointers that where array[0..1000] of real and a third pointer that was an array[1..200] of real. All 3 pointers where initialized with
for i := 0 to 1000 do
begin
ptr1^[i]:=0;ptr2^[i]:=0;ptr3^[i]:=0;
end;
While this poor programing did not bother Pascal in Delphi a call to Dispose any of the 3 pointers resulted in an Invalid Pointer Operation. The fix was simply to initialize the 3rd pointer correctly.
answered Sep 23, 2016 at 21:07
I have been caught out by this type of «indicated error» during Delphi debugging.
Check if you have any watched variables with «Allow Function Calls» enabled or watches that try to show other variables in the same unit (or global) that might be uninitialised. When stopping on a breakpoint this can cause Delphi’s debugger to attempt to display the value via a function call that accesses an uninitialised Pointer or variable. The actual variable that causes the AV my not even be on your watch list.
answered Jan 18, 2013 at 14:28
DespatcherDespatcher
1,73512 silver badges18 bronze badges
1
ВНИМАНИЕ!
|
Сообщение |
|
mea culpa
Группа: Пользователи
Репутация: |
…и почему-то никто почти не знает толком, от чего она берётся. На куске кода: Procedure ssendfile; вылетает Invalid Pointer Operation и вдобавок ещё одна ошибка с длинным содержанием, начинается «Unhabled execution in…». Было ещё несколько моментов с вылетом ошибки, но их я сумел исправить сам, здесь не получается.. ——————— «Знаешь, стыдно — когда не видно, что услышал всё, что слушал..» |
|
|
volvo |
Сообщение |
Гость |
Локализуй место ошибки… Лучше всего для этого пользоваться FastMM. Как — см. здесь. Можешь поставить в каждой строке BreakPoint-ы, и посмотреть, в какой именно строке происходит вылет. А вообще, Invalid Pointer Operation — это ошибка работы с памятью. |
|
|
Unconnected |
Сообщение |
mea culpa
Группа: Пользователи
Репутация: |
Поставил брекпоинты, оттрассировал(кажется, так это называется), ошибка на строке form1.ClientSocket1.socket.SendText('#X'+form7.edit1.text+'#0'+inttostr(form1.listbox2.itemindex)); и выдаётся Цитата » is not valid integer value . Я подумал на преобразование inttostr и сделал так: showmessage(inttostr(form1.listbox2.itemindex)); Сообщение 1.. Программа порадовала Эскизы прикрепленных изображений ——————— «Знаешь, стыдно — когда не видно, что услышал всё, что слушал..» |
|
|
volvo |
Сообщение |
Гость |
А чему должно было быть равно значение ItemIndex? Ты что-то выбирал в ListBox-е? |
|
|
Unconnected |
Сообщение |
mea culpa
Группа: Пользователи
Репутация: |
Да, там сначала кликаешь на ник пользователя, а потом отправка. Причём аналогичная процедура без шифрования работает. К тому же с брекпойнтами на этой строке появляется окно с ассемблерным кодом и той же ошибкой. Добавлено через 3 мин. Вот обе рядом, первая работает на отлично. Procedure sendfile; ——————— «Знаешь, стыдно — когда не видно, что услышал всё, что слушал..» |
|
|
volvo |
Сообщение |
Гость |
Попробуй сделать Cipher локальной переменной, а не глобальной… Что-то мне кажется, что надо его освобождать (Free), прежде чем обращаться к результатам шифрования. И, заодно, проверь, где именно портится значение form1.listbox2.itemindex, то есть выводи его перед каждой строкой работы с cipher. |
|
|
Unconnected |
Сообщение |
mea culpa
Группа: Пользователи
Репутация: |
Сделал локальными, но смысла в этом в принципе нет, т.к. принимает поток другая копия программы, и к тому же вызывается cipher.burn. Несколько часов тестил программу, результаты.. procedure TForm7.Button2Click(Sender: TObject); //здесь происходит выбор, какую процедуру вызывать. Shifr2=true Ок — ошибок при прохождении не возникает. На строке, помеченной «?», переход в модуль CoolTrayIcon.pas(при чём он здесь — не понимаю, на эту форму он вообще не должен воздействовать), и далее на строке, помеченной «!!!» (в самом верху) ошибка. Сообщение отредактировано: Unconnected — 22.02.2009 17:09 ——————— «Знаешь, стыдно — когда не видно, что услышал всё, что слушал..» |
|
|
volvo |
Сообщение |
Гость |
Цитата Сделал локальными Правда? А где описание переменной внутри процедуры SSendFile? Где локальность-то? Я ж говорил: Создавать и уничтожать cipher ВНУТРИ процедуры, а не где-то там, извне, и только после уничтожения обращаться к шифрованному потоку (то, что у тебя сейчас происходит — это не называется «работает», это называется глючит неизвестно где)… У тебя вон и так непонятно что с формами творится, наплодил глобальных переменных, получи результат… |
|
|
Unconnected |
Сообщение |
mea culpa
Группа: Пользователи
Репутация: |
Если сделать локальной для Ssendfile — Self Undeclared Identifier в конструкторе. ——————— «Знаешь, стыдно — когда не видно, что услышал всё, что слушал..» |
|
|
volvo |
Сообщение |
Гость |
Ну, так значит что-то ты делаешь не так… Открой примеры, идущие с библиотекой, и убедись, что ВЕЗДЕ cipher описывается локально, и все работает. |
|
|
Unconnected |
Сообщение |
mea culpa
Группа: Пользователи
Репутация: |
Ура!!!!!!!!!!!!!!!! Сделал процедуру SSendfile принадлежащей к форме, Self активировался, потом сетевая зараза вызвала buffer overflow…потом ещё немного танцев с бубном.. Спасибо огромное, volvo!!!!!!!!!!!! Кстати, если везде используются локальные переменные — это не всегда хорошо. Я их сделал локальными везде, где только возможно, и приём файла работать с локально описанным потоком почему-то не захотел, только с глобальным, хотя этот поток больше нигде не использовался. Сообщение отредактировано: Unconnected — 23.02.2009 1:58 ——————— «Знаешь, стыдно — когда не видно, что услышал всё, что слушал..» |
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
← →
VitGun ©
(2004-11-19 19:30)
[0]
Проблема вот в чем. При закрытии программы вываливается сообщение «Invalid pointer operation».
В программе есть динамический массив. Если не задавать ему длину и не создавать его элементы, то прога
закрывается нармально, но если создать, то «Invalid pointer operation». В собыии OnClose главной формы написал
cap:=nil
где:
cap:array of real;
Прочитал в одной статье, что так массивы уничтожаються (aka Dispose для указателей в Pascal), но нифига не
помогает…что я не сделал? Где руки выпрямлять?
← →
wicked ©
(2004-11-19 19:47)
[1]
а зачем ему nil присваивать?…. он и сам уничтожится….
← →
GLFox
(2004-11-19 20:07)
[2]
SetLength(YourDynamicArray,0);
← →
VitGun ©
(2004-11-19 20:07)
[3]
2 wicked
Нифига…хоть присваивай nil, хоть не присваивай…все равно «Invalid pointer operation»
← →
VitGun ©
(2004-11-19 20:10)
[4]
2 GLFox и это тож пробовал…те же яйца только в профиль…
← →
GLFox
(2004-11-19 20:12)
[5]
А еще какие поинтеры используешь?
← →
VitGun ©
(2004-11-19 20:19)
[6]
Никаких…в том то и дело. Это единственный DynamicArray во всей проге…
← →
Anatoly Podgoretsky ©
(2004-11-19 20:20)
[7]
У тебя ошибка в программе.
← →
VitGun ©
(2004-11-19 20:22)
[8]
2 Anatoly Podgoretsky. Угу. Я догадался…вопрос в другом…где?
Если динаические массивы не использовать, то все ОК, если использовать — то трабл.
← →
DrPass ©
(2004-11-19 20:27)
[9]
> Если динаические массивы не использовать,
Второй наводящий вопрос: а как ты их используешь?
← →
VitGun ©
(2004-11-19 20:39)
[10]
2 DrPass.
…
Setlength(cap,len);
…
где len — некоторая переменная типа integer
…
for i:=0 to len do
begin
cap[i]:=something;
end;
…
← →
begin…end ©
(2004-11-19 20:40)
[11]
> [10] VitGun © (19.11.04 20:39)
Ну вот видишь, как всё просто оказалось, всего-то надо заменить len на len — 1 (в заголовке цикла).
← →
Anatoly Podgoretsky ©
(2004-11-19 20:41)
[12]
VitGun © (19.11.04 20:22) [8]
Да, да именно так, ошибка при работе с динамическими массивами, вот теперь когда способился привести хоть чуть кода, то это уже стало не предположением, а истиной. Ты выходишь за пределы массива, а контроль за этим явно отключил.
Для начала срочно в настройки компилятор, проштудировать их и до тех пор ни строчки кода или же пиши без ошибок.
← →
Anatoly Podgoretsky ©
(2004-11-19 20:43)
[13]
begin…end © (19.11.04 20:40) [11]
Ну сдесь исправит, так в другом месте вылезет, надо не заплатки, а как минимум включить контроль за границами.
← →
Anatoly Podgoretsky ©
(2004-11-19 20:45)
[14]
Сделай для начала так
SetLength(,2) затем на бумажке пишешь, вручную прокручивая цикл
I = ?
..
I = ?
и считаешь количество строк, затем сравниваешь с количеством строк массиса
← →
begin…end ©
(2004-11-19 20:45)
[15]
> [13] Anatoly Podgoretsky © (19.11.04 20:43)
Ну это само собой, а также, ИМХО, лучше пользоваться в таких случаях не конкретной переменной, а High(cap).
← →
VitGun ©
(2004-11-19 20:47)
[16]
2 Anatoly Podgoretsky
Уж извините..нет. За пределы массива я не выпадаю. Сие мне известно и контроль включен. Ошибка появляется при ЗАКРЫТИИпрограммы, а не во время выполнения.
← →
begin…end ©
(2004-11-19 20:48)
[17]
> [16] VitGun © (19.11.04 20:47)
Какой недоверчивый, какая разница — во время выполнения или при закрытии, программа просто злопамятная, вот и ругается только в конце.
← →
VitGun ©
(2004-11-19 20:51)
[18]
Хм…
Полтергейтс однако… len — 1 не помогло, а вот len-2 помогло.
← →
GLFox
(2004-11-19 20:51)
[19]
for i:=0 to len do
begin
cap[i]:=something;
end;
Данный код не может быть верным! Индексы в динамических массивах начинаются с НУЛЯ и заканчиваются на Length(YourArray)-1.
← →
VitGun ©
(2004-11-19 20:53)
[20]
Блин…работает…
2 begin…end & Anatoly Podgoretsky — respect. Спасибо за помощь!
← →
Anatoly Podgoretsky ©
(2004-11-19 20:56)
[21]
VitGun © (19.11.04 20:47) [16]
Ой не надо отпираться от горячего, ты бы уж не проводил свой код, а теперь краснеть надо за продолжающее развешивание лапшию
Кроме того ты выполнил домашнее задание в 14, сколько у тебя получилось?
← →
Anatoly Podgoretsky ©
(2004-11-19 20:58)
[22]
begin…end © (19.11.04 20:45) [15]
Ну это способ писать без ошибок, особенно если к ней добавить еще и Low
← →
Palladin ©
(2004-11-19 20:59)
[23]
> [16] VitGun © (19.11.04 20:47)
ты может быть сначала вникнешь прежде чем сопротивляться… не веди себя как ламер…
← →
VitGun ©
(2004-11-19 21:07)
[24]
2 Anatoly Podgoretsky:
[14] пост не видел — сорри.
2 Palladin.
Да понял я в чем моя ошибка. Я то был уверен, что обращаюсь к верному кол-ву элементов массива, т.е ошибка была именно в цикле.
len — есть кол-во записей в ValueListEditor. Я брал
len=ValueListEditor.RowCount-1.