Добрый день, Кирилл! Скорее всего не она неправильно работает, а ты ее неправильно вызываешь! Приведи кусок кода твоей проги. Ответ отправлен: 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++. Заранее
благодарен тем, кто дочитал до этого места и еще больше тем, кто ответит.
Приветствую Вас, 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); то оно считает еге одномерным. Заранее спасибо.
Добрый день, Александр! Самый лучший способ - определить тип такой "двумерный массив". См. пример. Или нужно именно открытый массив? Тогда работа пойдет сложенее. Нужно будет "ручками". Проблема в том, что когда формальный параметр - открытый массив, то перед указателем на массив процедуре фактического параметра передается слово (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.