Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 031
от 24.08.2002, 17:30

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 51
Отправлено ответов: 132
Активность: 258.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.92
URL: Пристанище неодинокого программиста
[Подробней >>]
Zloy
Статус: Опытный
Общий рейтинг: 107.25
URL: The полный отстой
[Подробней >>]
portos
Статус: Опытный
Общий рейтинг: 150
[Подробней >>]
 
kvINT
Статус: Опытный
Общий рейтинг: 110.67
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 114.02
URL: В помощь программисту
[Подробней >>]
Byter
Статус: Доверительный
Общий рейтинг: 122.82
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 50. Гутн тайм, Артём! Пишу персонально, потому что только от вас получал нужные мне ответы (остальные х... (ответов: 1)
Вопрос № 51. Я ентот вопросик писал ужо, но я его по другому сформулирую. КАК ЧЕРЕЗ ПАСКАЛЬ СОЗДАТЬ ФАЙЛ, КОТОРЫЙ... (ответов: 5)

Вопросов: 2, ответов: 6


 Вопрос № 50

Гутн тайм, Артём!
Пишу персонально, потому что только от вас получал нужные мне ответы (остальные хотя тоже ничего были:).
Я опять по поводу "кучи". Вы здоровски обьяснили как поинтером пользоваться, который указывает на _одиночную_ переменную. А если у меня поинтер на 2-умерный массив?
Я тут потыкался, вроде получается если (при чтени/записи из памяти/в память) представлять переменную ни как 2-умерный, а 1-омерный массив. Но тут заподло MULом ещё сдвиг этот считать... Так как тут попроще обойтись?


Приложение:


Вопрос отправлен: 20.08.2002, 20:15
Отправитель: KODer (koder@xakep.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Здравствуйте, KODer!

А ты думал - как в паскаль это в машинный код переводит? Именно так. Местами даже хуже. Поэтому программисты, оптимизирующие свой код по быстродействию, используют многомерные массивы, младшие размерности которых соответствуют степеням двойки. Тогда код выглядит приблизительно так:

type
MType=array[0..22,0..127]of byte;
MPtr=^MType;
var
M:MPtr;
b:byte;
x,y:word;
begin
new(M);
x:=3;
y:=51;
asm
les di,M
mov bx,x
shl bx,7
add bx,y
mov al,es:[di+bx]
mov b,al
end;
writeln(b);
end.

В этом случае идёт перерасход памяти (ты теряешь 23*[128-87]=943 байта памяти данных), но быстродействие увеличивается значительно.

Воспользуйся TurboDebugger'ом и посмотри на сгенерированный паскалем машинный код, когда обращение к элементам массива, размещённого в куче, он делает "своими силами"

type
MType=array[0..22,0..127]of byte;
MPtr=^MType;
var
M:MPtr;
b:byte;
x,y:word;
begin
new(M);
x:=3;
y:=51;
b := M^[x,y];
writeln(b);
end.

Я уверен, что код будет почти такой же, как и в первом примере.

PS. То, что мои ответы нравятся вопрошающим - это приятно, но возносить на небо эксперта не нужно: достаточно уже того, что вопрос персональный.

Ответ отправлен: 21.08.2002, 12:51
Отправитель: Артём Шегеда


 Вопрос № 51

Я ентот вопросик писал ужо, но я его по другому сформулирую. КАК ЧЕРЕЗ ПАСКАЛЬ СОЗДАТЬ ФАЙЛ, КОТОРЫЙ НЕЛЬЗЯ УДАЛИТЬ СТАНДАРТНЫМИ СРЕДСТВАМИ ВИНДЫ(МОЖНО И ДОСА). Только напишите функцию пожайлуста, или хотябы объясните как этот фокус провенуть???



Вопрос отправлен: 21.08.2002, 17:29
Отправитель: PC Gamer (pcgamer@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Zloy

Здравствуйте, PC Gamer!
Можно просто создать файл и загрузить его в память. Тогда его нельзя удалить в винде.

Ответ отправлен: 22.08.2002, 07:55
Отправитель: Zloy


Отвечает portos

Доброе время суток, PC Gamer!
установи на файл атрыбуты системный, скрытый, только для чтения, архивный. При стандартной настройке винды такой файл в проводнике не видно
функция setfattr

Приложение:

Ответ отправлен: 21.08.2002, 17:47
Отправитель: portos


Отвечает kvINT

Приветствую Вас, PC Gamer!
Не знаю, что ты имеешь в виду насчет стандартных средств, но попробую ответить. Сделай файл с атрибутом "системный". Можешь также "скрытый" и "только для чтения", но эти меры помогут только против полных чайников. Остальные просто поменяют эти атрибуты и спокойно удалят файл.
Атрибуты устанавливаются в поле attr переменной типа SearchRec. Модуль DOS.
Бит 0 "Только для чтения"
Бит 1 "Скрытый"
Бит 2 "Системный"

Ответ отправлен: 21.08.2002, 22:32
Отправитель: kvINT


Отвечает Igoryk

Приветствую Вас, PC Gamer!
Ну я уже говорил: создай файл, а потом не добавляй команду close в конце программы. Windows будет думать что твоя программа работает с этим файлом и удалить его не сможет.
Но, правда, есть команды по типу 'удалить несмотря ни на что'...

Ответ отправлен: 22.08.2002, 10:20
Отправитель: Igoryk


Отвечает Byter

Добрый день, PC Gamer!
Смотри свое мыло!

Ответ отправлен: 22.08.2002, 22:27
Отправитель: Byter



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (28)
Perl (13)
Delphi (16)
Pascal (26)
Basic / VBA (11)
Java / JavaScript (12)
PHP (11)
MySQL / MSSQL (12)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (30)
"Железо" (39)
Поиск информации (18)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (16)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (7)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное