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

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


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


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

Выпуск № 142
от 23.05.2003, 00:00

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


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

baldr
Статус: Профессиональный
Общий рейтинг: 112.5
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 121.65
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 д.
[Подробней >>]
BOLT
Статус: Опытный
Общий рейтинг: 161.45
URL: В помощь начинающему программитсу Assembler, C/C++
[Подробней >>]
 
Tigran K. Kalaidjian
Статус: Опытный
Общий рейтинг: 116.36
URL: Методы оптимизации работы ПК
[Подробней >>]
Tancho
Статус: Опытный
Общий рейтинг: 150.28
[Подробней >>]
Bill
Статус: Доверительный
Общий рейтинг: 184.61
[Подробней >>]
 
Дима Мусиенко
Статус: Доверительный
Общий рейтинг: 110.78
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 133.84
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.2
[Подробней >>]
 
_vt
Статус: Доверительный
Общий рейтинг: 120.23
[Подробней >>]
joe
Статус: Начальный
Общий рейтинг: 121.27
[Подробней >>]


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

Вопрос № 235. За компьютером работаю со всеми правами. В Паскале не работает процедура SetTime... (ответов: 5)
Вопрос № 236. Всем экспертам привет! Большая просьба не пропускать этот вопрос. А то я смотрю, все любят отвечать ... (ответов: 2)
Вопрос № 237. обьясните пожалуйста как работать с двумерными массивами в процедурах если сделать procedure(var ar:... (ответов: 8)

Вопросов: 3, ответов: 15


 Вопрос № 235

За компьютером работаю со всеми правами.
В Паскале не работает процедура SetTime



Вопрос отправлен: 19.05.2003, 08:54
Отправитель: Кирилл

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

Отвечает baldr

Добрый день, Кирилл!
Скорее всего не она неправильно работает, а ты ее неправильно вызываешь! Приведи кусок кода твоей проги.

Ответ отправлен: 19.05.2003, 12:53
Отправитель: baldr


Отвечает Sensey

Доброе время суток, Кирилл!
Под 9х работает.
Под NTподобными - она работает, как минимум под W2k (под XP не пробовал), но!
время устанавливается для данной задачи, но не для всего компа. Проверял так:

begin
SetTime(0,1,0,0);
readkey;
GetTime(h,m,s,s1);
writeln(h:3,m:3,s:3,s1:3);
readkey;
end;

После выполнения из-под TP запиши файл еще раз - увидишь время как в проге поставлено, но в самой системе останется все по прежнему :(((


Ответ отправлен: 19.05.2003, 14:32
Отправитель: Sensey


Отвечает BOLT

Здравствуйте, Кирилл!
У меня вообще прикол: когда попытался использовать эту функцию, DrWEb выдал сообщение что в системе обнаружен Trojan.FastKill.
Насчет проблемы: этот модуль не разрабатывался и не тестировался под NT-системы, т.к. их еще тогда не было.Я не пользуюсь TurboPascal, в Delphi это делается эффективнее - испльзуя api-интерфейс Windows.
Счастливо!

Ответ отправлен: 19.05.2003, 14:54
Отправитель: BOLT


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Кирилл!
Кхе... Что за привычка задавать вопросы по коду не показывая самого кода ? Тут же не шаманы сидят.
Проверьте подключение соотв. библиотеки:
uses WinDos;

Ответ отправлен: 20.05.2003, 19:28
Отправитель: Tigran K. Kalaidjian


Отвечает Tancho

Добрый день, Кирилл!
Я уже писал об этом проблеме.То что в добавке могу сказать-
следующие : Не работает и внутренная команда time если она
была вызвана из программый на Turbo Pascal через EXEC.Не
работает и функция 2Dh прерывания Int 21h DOS'а независимо
как оно вызвано в отделном программе или встроенного Assembler'а.Изобще есть много ловушки когда работается
под DOS в WINDOWS XP.
P.S. Команда time вызвана в DOS режиме работает коректно,
проблема только когда вызывается как внутренная!
Ну в приложение пример можно поекспериментировать!

Приложение:

Ответ отправлен: 21.05.2003, 17:44
Отправитель: Tancho


 Вопрос № 236

Всем экспертам привет!
Большая просьба не пропускать этот вопрос. А то я смотрю, все любят отвечать на однострочные. Вопрос большой, по-другому нельзя, вот такой я.
Пишу сразу и в рассылку Delphi и в Pascal, т.к. вопрос не по конкретным компиляторам, а по языку, в общем. Занимаюсь в основном алгоритмикой, по этому не привязан к конкретному компилятору. А тут собрались мы(узкий круг программеров) год назад и решили сделать проект, чтоб всем заняться было чем-то. Ну решили написать мощную игровую платформу в жанре пошаговой тактической стратегии, только не для людей, а для искусственных интеллектов(ИИ), которые будут писать все желающие программеры на Земле;) Первый блин комом – писали на QBasic’e 4.5, хотя проект дошёл до конца, дал опыту, поучил на ошибках. Вторая часть – позор нам как программерам %( Писали на TPascel'e 7.0. О боже! 10 сегментов памяти, все берём о минимуму, графика уже VESA 800*600*8bpp, а математика глючит, структура связи интеллектов и модулей платформы трещит по швам… Так и бросили. И решили сразу писать под 32-х битную платформу, пока только WIN32 на Delphi 5,6,7,>7. Для WIN32 решили сделать такую структуру связи: ИИ в виде *.DLL юзаются ГЛАВНОЙ_ПРОГРАММОЙ.DLL от куда вызываются по очереди главные процедуры ИИ.DLL, а ИИ.DLL юзают процедуры, функции и открытые переменные ЯДРА.DLL. Изначально проект был задуман так, что даже начинающий программист сможет дополнять проект и писать ИИ на любом языке. Статистика показывает, что по использованию программистами лидирует Дельфи, вот почему не С++. Я придерживаюсь политики независимости от программных продуктов, поэтому ядро проекта изначально писалось в консольном виде. Для понятной структуры мира решили использовать объектное программирование. И видим мы здесь Object и Class. Class рулит, но по любому наследует потроха TObject. Конечно можно извратиться и попробовать перекомпилировать модуль System. Object ничего не наследует если надо, но трудней с выделением памяти да и вообще использование динамически распределённых объектных переменных. Что думают по этому поводу господа эксперты? Нигде не могу найти толковую документацию в электронном виде по объектам и классам, везде тоже самое - фигня. Не поверите, сколько лет программирую до сих пор не знаю нафиг надо виртуальные и невиртуальные методы в объектах и классах? Мне надо чтоб по-нашенски мне объяснили на толковых примерах зачем, как, для чего. Хотя бы ссылками поможИте. Да, вот ещё вопросик, без проблем ли будет использование в ИИ.DLL переменных классов описанных в ЯДРЕ.DLL? Учитывается, то, что ИИ.DLL может писаться на языке отличном от Obj.Pascal, например VB или VС/C++. Заранее благодарен тем, кто дочитал до этого места и еще больше тем, кто ответит.




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

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

Отвечает Bill

Приветствую Вас, KODer!
Ну так и хочется написать короткий ответ и прибавить - я такой. Но попробую подлиннее.
Какие книги есть в Вашем распоряжении? Мне нравится описание объектов в Object Pascal (а именно он в Delphi) у Дарахвелидзе П., Марков Е "Программирование в Delphi NN". По-моему имеются варианты для всех версий.
Книги хотя и толстые, но таков теперь Паскаль.
О классах и объектах:
то, что класс наследуется от TObject - в этом только положительные стороны.
Если хотите, чтоб "с нуля" и без наследования, то надо писать
TYPE
TSomeObject = object // Не класс, а OBJECT
....
end;
и никакой SYSTEM переписывать не надо. Object Pascal написан для людей и грамотно, учли почти все возможные запросы.
По-этому, чтоб не фигня в ответах была была, попробуй сформулировать задачи базового объекта, хотя бы вкратце, и что должны делать его потомки.
Тогда пример можно предложить толковее и помочь будет проще. К стати, о терминологии: в Object Pascal классом называют тип, то есть то, что описывается в разделе TYPE, а Object - это экземпляр класса, то есть VAR o: TSomeObject. "o" и есть объект.


Ответ отправлен: 19.05.2003, 17:50
Отправитель: Bill


Отвечает BOLT

Добрый день, KODer!
Если хотите зделать проект мирового класса(хотя я в этом сильно сомневаюсь - цель не понятна), тогда брасайте нафиг Object Pascal!
C/C++ - вот что вам нужно.Объектно Ориентированная Модель - очень мощна(пожалуй самая мощная и эффективная, но увы не всегда надежна в неумелых руках).C/C++ в плане ООП намного превосходит Object Pascal(Delphi).
>> "Статистика показывает, что по использованию программистами лидирует Дельфи, вот почему не С++"
Это заявление выражает у меня смех!Каких программистов нахрен(извините)???Может программисток!!!Ты видел какие-нибудь известные продукты написанные на "Дельфи"(фу, блинн...как противно...Delphi!!!).Нет?Афигеть, какое совпадение, я тоже!(Сразу прошу прощение у поклоников Delphi, мое мнение основывается только на фактах.И здесь я не намерен их приводить, т.к. не хватит места :з)
Короче, Склифасовский: ядро пишите на C/C++(Лучше на асме), а все остальное можно хоть на VB.
Прошу прощение, если кого обидел!
Счастливо!

Приложение:

Ответ отправлен: 22.05.2003, 13:31
Отправитель: BOLT


 Вопрос № 237

обьясните пожалуйста как работать с двумерными массивами в процедурах
если сделать procedure(var ar:array of integer);
то оно считает еге одномерным.
Заранее спасибо.



Вопрос отправлен: 19.05.2003, 15:47
Отправитель: Александр

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

Отвечает Bill

Добрый день, Александр!
Самый лучший способ - определить тип такой "двумерный массив". См. пример.
Или нужно именно открытый массив? Тогда работа пойдет сложенее. Нужно будет "ручками".
Проблема в том, что когда формальный параметр - открытый массив, то перед указателем на массив процедуре фактического параметра передается слово (WORD) - фактическая длина данного массива.
Одно слово, а не два... !
Убедиться в этом можно с помощью отладчика (см. Пример 2). Выполняешь программу до входа в процедуру.
Можно поставить курсор на BEGIN процедуры и нажать F4. Теперь нужно посмотреть содержимое стека (параметры передаются через стек программы, особую область программы).
Для этого нажми CTRL+F7, введи addr(ab) и нажми ENTER. Затем добавль с помощью INSERT "DSeg, x" (x - чтобы в шестнадцатиричном представлении), и "Ptr(SSeg, SP)^, 8m". До запятой - прошу показать, что находится в стеке по адресу SSeg:[SP]. SP - это особый указатель в стеке. "8m" - содержимое памяти 8 байт.
У меня получилось вот что:
addr(ab): Ptr(DSeg,$52)
DSeg, x: $13D5
Ptr(SSeg, SP)^, 8m: 49 00 07 00 52 00 D5 13
Теперь объясняю, что видишь: две последние цифры - это адрес сегмента данных (только пишется "наоборот" - младший байт по младшему адресу).
"52 00" - это $52 = $0052, по тому же принципу. "07 00" = 7 - это и есть длина массива (счет с нуля!).
Процедуры LOW(a) и HIGH(a) именно сюда и обращаются! Как видишь, места для второй размерности просто нет


Приложение:

Ответ отправлен: 19.05.2003, 19:04
Отправитель: Bill


Отвечает BOLT

Добрый день, Александр!
См в приложение.
Счастливо!

Приложение:

Ответ отправлен: 19.05.2003, 17:39
Отправитель: BOLT


Отвечает Дима Мусиенко

Здравствуйте, Александр!
А ты попробуй обьявить массив как свой тип, а именно, см. ниже


Приложение:

Ответ отправлен: 19.05.2003, 17:22
Отправитель: Дима Мусиенко


Отвечает Lynx

Здравствуйте, Александр!
Можно попробовать организовать тип двумерного массива(2DArray) и указывать тип не в явную, а с помощью 2DArray.


Ответ отправлен: 19.05.2003, 19:10
Отправитель: Lynx


Отвечает Ayl

Здравствуйте, Александр!
В качестве открытых массивов в Borland Pascal допускаются только одномерные массивы. Поэтому свой двумерный массив ты должен определять как одномерный.

Ответ отправлен: 19.05.2003, 16:17
Отправитель: Ayl


Отвечает _vt

Доброе время суток, Александр!
Вот примерчик, надеюсь понятный...

Приложение:

Ответ отправлен: 19.05.2003, 22:03
Отправитель: _vt


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Александр!
опишите тип, соответствующий нужному 2-мерному массиву, и пользуйтесь наздоровье.
для примера:
const n=10;{кол-во строчек и столбцов}
m=5;
type tigmas=Array[1..n,1..m] of Integer;
...
procedure tigproc(var ar:tigmas);
...

Ответ отправлен: 19.05.2003, 20:17
Отправитель: Tigran K. Kalaidjian


Отвечает joe

Приветствую Вас, Александр!
Обычно делают так (по крайней мере в Дельфях):
var a: array of array of integer


Ответ отправлен: 20.05.2003, 06:03
Отправитель: joe



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2003 Россия, Москва. Авторское право: RusFAQ.ru

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

В избранное