1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| compiler |
27.05.2007 14:01
Сообщение
#1
|
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Хотелось бы написать программку которая вызывала ошибку в распределении памяти...
для этого я хочу написать 3 проги . первая - читает число(в указатель), адрес указателя пишет в файл, ждет действия второй програмки(которая будет пытаться прочитать/изменить значения указателя) и печатает это же число. первую програмку я то написал но с ошибками var заранее благодарен. добавлено (вторая программа+в первой уничтожена одна переменная) var Сообщение отредактировано: compiler - 27.05.2007 15:12 -------------------- Спасибо!
Удачи! |
![]() ![]() |
| volvo |
27.05.2007 21:48
Сообщение
#2
|
|
Гость |
Ты можешь мне объяснить, ЧЕГО ты хочешь добиться??? (словами, без этого бреда, который ты тут написал?)
Ну, допустим, вначале запускается программа, СОЗДАЮЩАЯ файл... Хорошо, запустил я ее... Ввел число... Что дальше происходит, ты подумал? Что ты пишешь в файл? Указатель на указатель на LongInt? Допустим... Только учти, что этот указатель, который ты пишешь - он валиден только в той программе, в которой было выделение памяти. Другая программа - другой процесс, другое адресное пространство... Хорошо, забудем про это на секунду... Что ты делаешь дальше (и, соответственно, что должен делать я, чтобы повторить полученный тобой результат?) - закрыл файл... Допустим, это тебе разрешат сделать... Дальше что? Ты переоткрываешь файл, пока он переоткрывается, т.е., по твоей задумке - пока вторая программа его не удалит? А кто ей даст удалить файл, занятый другим процессом, ты не подумал? Ты моментально получишь AccessDenied даже при попытке Reset-а! Забудем и про это... Теперь, по твоей задумке, я должен запустить вторую программу, так? Которая у тебя почему-то приведена первой (ты бы хоть комментарии оставлял, что запускать когда, здесь не форум телепатов, все-таки). Хорошо, запустил. Дальше что? Прочел из файла значение в переменную L... Ты не забыл, что там записано? Я тебе напомню, указатель на указатель на LongInt. Что ты делаешь с L? Печатаешь его? И что ты хотел получить? Тебе если на то пошло надо печатать вот это: type Но вся эта цепочка, которую ты задумал, прервется гораздо раньше - по Access Denied при попытке открытия файла, занятого другим приложением. У тебя еще есть желание продолжать эти изыскания? |
| compiler |
28.05.2007 12:25
Сообщение
#3
|
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Ты можешь мне объяснить, ЧЕГО ты хочешь добиться??? (словами, без этого бреда, который ты тут написал?) ошибку!!! пока вторая программа его не удалит? тут проблема что он не удаляется ибо открыт на запись, но вторая программа считает что он удален(!) Но вся эта цепочка, которую ты задумал, прервется гораздо раньше - по Access Denied при попытке открытия файла, занятого другим приложением. У меня пока ошибка не прявляется...У тебя еще есть желание продолжать эти изыскания? пока не прпало -------------------- Спасибо!
Удачи! |
| -compiler- |
28.05.2007 13:08
Сообщение
#4
|
|
Гость |
собственно подозрительный этот кусок,
{$I-}
ведь ошибка может возникнуть не потому что нету файла, а потому что отказанно в доступе... надо бы придумать другой способ проверять наличие файла... |
compiler адрес указателя 27.05.2007 14:01
volvo ad:=Integer(Addr(p));
(только если ты уверен, что ... 27.05.2007 14:08
compiler [code=pas]ad:=Integer(Addr(p));(только если ты уве... 27.05.2007 14:14
volvo Что значит "все равно ошибка"? То, что я... 27.05.2007 14:23
compiler Что значит "все равно ошибка"? прости, п... 27.05.2007 14:31
volvo
WriteLn(SizeOf(Integer)); { <--- Мне выдает 4 ... 27.05.2007 15:53
compiler WriteLn(SizeOf(Integer)); { <--- Мне выдает 4 }... 27.05.2007 16:45
volvo Ничего не надо спрашивать... Я и так тебе скажу: э... 27.05.2007 16:51
compiler
Ничего не надо спрашивать... Я и так тебе скажу: ... 27.05.2007 17:06
volvo Не знаю, мне при {$mode ObjFPC} тоже дает Siz... 27.05.2007 17:14
compiler Не знаю, мне при {$mode ObjFPC} тоже дает Siz... 27.05.2007 17:18
volvo [b]Appendix D
D.3 Delphi mode
...
5. The Objpas u... 27.05.2007 17:37
compiler размер Pointer, как я теперь понял 4 поэтому буду ... 27.05.2007 17:45
compiler а как присвоить адрес указателю?
var
p : ^longin... 27.05.2007 19:20![]() ![]() |
|
Текстовая версия | 9.12.2025 20:20 |