0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
1 |
|
15.03.2017, 18:15. Показов 24292. Ответов 14
Создаю проект. Самый обычный.
0 |
5535 / 4320 / 1383 Регистрация: 14.04.2014 Сообщений: 19,357 Записей в блоге: 19 |
|
15.03.2017, 22:34 |
2 |
ошибка в проекте
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
15.03.2017, 23:06 [ТС] |
3 |
Не совсем поняла “пока ничего не изменится”.
0 |
пофигист широкого профиля 4657 / 3092 / 854 Регистрация: 15.07.2013 Сообщений: 17,819 |
|
16.03.2017, 01:53 |
4 |
Программа в архиве. А она не компилируется. Не хватает модуля ChangePassword
0 |
0 / 0 / 0 Регистрация: 05.11.2016 Сообщений: 31 |
|
16.03.2017, 01:56 [ТС] |
5 |
Да, извиняюсь, не тот вариант работы отправила.
0 |
пофигист широкого профиля 4657 / 3092 / 854 Регистрация: 15.07.2013 Сообщений: 17,819 |
|
16.03.2017, 02:44 |
6 |
Вот этот запускается. Увы. Он тоже не запускается. Ибо не находит файлы Data.DB, Data.Win.ADODB. Не по теме: Какой мусор и с какой помойки вы нам предлагаете?
0 |
5535 / 4320 / 1383 Регистрация: 14.04.2014 Сообщений: 19,357 Записей в блоге: 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 |
5535 / 4320 / 1383 Регистрация: 14.04.2014 Сообщений: 19,357 Записей в блоге: 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 |
5535 / 4320 / 1383 Регистрация: 14.04.2014 Сообщений: 19,357 Записей в блоге: 19 |
|
17.03.2017, 00:40 |
14 |
здесь на форуме советовали RevoUninstaller
0 |
1436 / 1013 / 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 have a form that contains a TOpenDialog
component (OpenDialog1
) and a button.
OpenDialog1
has the ofAllowMultiSelect
(of Options
) property set to true.
Upon clicking the button the method AddFilesToListView
is executed:
procedure TForm4.AddFilesToListView();
var
ListItem : TListItem;
I: Integer;
F : File;
LengthOfAudio : TDateTime;
previousCursor : TCursor;
begin
previousCursor := Self.Cursor;
Self.Cursor := crHourGlass;
if OpenDialog1.Execute then
begin
for I := 0 to OpenDialog1.Files.Count - 1 do begin
if FileExists(OpenDialog1.FileName) then begin
ListItem:=ListView1.Items.Add;
ListItem.Caption := 'Test';
ListItem.SubItems.Add(ExtractFileName(OpenDialog1.Files[I]));
ListItem.SubItems.Add(ExtractFilePath(OpenDialog1.Files[I]));
end else
raise Exception.Create('File does not exist.');
end;
end;
Self.Cursor := previousCursor;
OpenDialog1.Files.Free;
end;
When running the application, selecting the first file, I have no problem but when wanting to select the second one, I get an error saying “Project project3 raised an exception class EInvalidPointer with message ‘Invalid Pointer Operation’.”
What’s the cause of this, how do I correct this?
Rob Kennedy
161k21 gold badges275 silver badges465 bronze badges
asked Jun 30, 2009 at 17:39
“Invalid pointer operation” means you freed memory that didn’t belong to you. One of these three things is the cause:
- Your program freed something that had already been freed once before.
- Your program freed something that was never allocated in the first place.
- Your program freed something that had been allocated with a different memory manager.
In your code, you’re freeing the TOpenDialog
‘s Files
property. You didn’t allocate that string list, and the documentation doesn’t tell you to free it, so it’s reasonable to expect that the list actually belongs to the dialog component, and that the component will free it when it wants. Checking the source code in Dialogs.pas confirms that. Since you have also freed that object, you have a double-free error, which meets the first criterion I listed above. Remove that line.
As Uwe pointed out, you’re also processing a list of file names but only checking the existence of one. That’s a logic error in your program, but it would not cause the exception you’re seeing.
answered Jun 30, 2009 at 18:27
Rob KennedyRob Kennedy
161k21 gold badges275 silver badges465 bronze badges
2
You should check for
if FileExists(OpenDialog1.Files[I]) then begin
instead of
if FileExists(OpenDialog1.FileName) then begin
Better invest in a local variable holding that value.
And why this?
OpenDialog1.Files.Free;
answered Jun 30, 2009 at 17:53
Uwe RaabeUwe Raabe
44.5k3 gold badges81 silver badges128 bronze badges
1
Files is owned by the the TOpenDialog, and should not be freed directly.
answered Jun 30, 2009 at 18:36
skamradtskamradt
15.3k2 gold badges36 silver badges52 bronze badges