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

RusFAQ.ru: Программирование на C / C++


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


RusFAQ.ru: Программирование на C / C++

Выпуск № 046
от 27.07.2002, 18:10

Администратор:
Имя: Коробов Н.А.
URL: Информационный ресурс
ICQ: 365124
Украина, Днепропетровск
О рассылке:
Задано вопросов: 133
Отправлено ответов: 258
Активность: 193.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


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

Pablo
Статус: Доверительный
Общий рейтинг: 119.07
[Подробней >>]
Sinner
Статус: Доверительный
Общий рейтинг: 121.25
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 125.45
[Подробней >>]
 
Dzik
Статус: Опытный
Общий рейтинг: 110.83
URL: Разработка игрушек
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 114.51
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 121.47
URL: Пристанище неодинокого программиста
[Подробней >>]


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

Вопрос № 130. Привет эксперты! Отвечу на кое-какие ваши вопросы и продолжу эту тему: Zloy: Привет эксперты! Почему... (ответов: 2)
Вопрос № 131. Уважаемые эксперты, покажите, пожалуйста, где я ошибся: ниже пример из Страустрапа из 5 главы, 2-свя... (ответов: 5)

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


 Вопрос № 130

Привет эксперты!
Отвечу на кое-какие ваши вопросы и продолжу эту тему:
Zloy:
Привет эксперты!
Почему при работе приложения1 всё выводится нормально, а при приложении2 какая-то кракозяба ???
Использую BC++ 5.02.
Отвечает dmi
Приветствую Вас, Zloy!
А в чем ты пишешь - пробовал твой код в VC++ - вообще не пошел :(
Я сам суже второй месяц страдаю над тем, как в _asm объявить переменную типа msg db 'Hello world!$'.
Если че найдешь - может напишешь как это на самом деле делается?
Заранее трям.
Bye!

Привет dmi!
В VC++ он и не должен идти, обратил внимание на int 21h и то, что я написал, что пользуюсь BC++ 5.02

Отвечает Pablo
Добрый день, Zloy!
Даа ошибка конечно круто непонятная....а что при отладке происходит?!
Привет Pablo!
При отладке происходит следующее: в обоих случаях в dx пихаем 0000, но в 1-ом случае там Hello world!$, а во втором его там нет ??? Открыл я второй exe в тексте и нашёл там Hello..., но перелопатил весь сегмент данных - его нет!!! (хотя могу ошибаться, не бог)

Отвечает vitya
Добрый день, Zloy!
Не знаю если честно, но скорее всего не иницилизуруются какие-нибудь библиотеки.

Привет vitya!
Я тоже не знаю, поэтому и спросил :))
Библиотеки тут очевидно не причём, ведь это же асм, который не должен зависеть от библиотек С.

Отвечает Sensey
Добрый день, Zloy!
Не знаю, как в BC 5.02, но в 3.1
код в приложении работает...
Но я его немного модифицировал :)
так как не помню как настроить, чтобы твой вариант понял - это где-то в настройках ковырятся надо, а мне лень :)

Привет Sensey!
Помнится мне в ВС 3.1 нельзя скобку от слова асм отделять, т.е. писать так: asm{
А твоя модификация:) не помогла (и не могла помочь:)))

Так вот в продолжение: решил я заняться этим траболом на работе. Поставил себе на комп BC, набрал программу, нажал Ctrl+F9 ... Ошибка типа unable to find tasm.exe (точно не помню, но смысл тот). Я решил, что дистрибутив битый, установил себе bp 7.1 в autoexec прописал PATH=C:BPBIN и скомпилил всё заново... Представьте моё удивление, когда оба варианта сработали :)) Полез в TD: сегмент данных начинается как во 2 случае (он не работал), но потом (0090h) идёт Hello world!$ (в обоих). И вот, что я думаю: может у меня (да и не только) дома стоит битый TASM ??? Хотя в него я эту прогу (ессно на асме) загонял - всё ок!
Большая просьба всем экспертам - попробуйте этот код у себя!


Приложение:


Вопрос отправлен: 23.07.2002, 19:31
Отправитель: Zloy (zloy-site@mail.ru)

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

Отвечает Pablo

Доброе время суток, Zloy!
Мда видно у меня тоже нету tasmа в дистрибутиве, т.к. он у меня не установился. Нада по сидюкам своим порыскать чтоб tasm найти!

Ответ отправлен: 23.07.2002, 22:21
Отправитель: Pablo


Отвечает Sinner

Здравствуйте, Zloy!
Я уже отвечал по этому поводу, что в таких случаях хорошо бы для своего асм-кода проинициализировать ds, а потом вернуть его как было (после своего кода, ессно).

Ответ отправлен: 25.07.2002, 04:18
Отправитель: Sinner


 Вопрос № 131

Уважаемые эксперты, покажите, пожалуйста, где я ошибся:
ниже пример из Страустрапа из 5 главы, 2-связный список. в комментариях то, что я не понял
т.е зачем настраивать suc в только что созданном классе, если еще неизвестно, будет ли этот следующий? да и вообще, указатели какие-то неправильные :)
надеюсь на скорый ответ


Приложение:


Вопрос отправлен: 24.07.2002, 18:01
Отправитель: bik

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

Отвечает Ayl

Доброе время суток, bik!
Ты не прав. Вот смотри. У тебя есть список. Берем элемент (в любом месте). И делаем append. Тогда имеем следующую картину:
наш список имеет вид:
[1]<->[2]<->...<->[this]<->[next]<->...[end]
И новый элемент списка [p], добавляемый после [this].
В результате должны получить следующее:
[1]<->[2]<->...<->[this]<->[p]<->[next]<->...[end]
Т.е., если по полям, то все выглядит так:
До:
this.suc = next
next.pre (=this.suc.pre) = this
После:
this.suc = p
next.pre (=this.suc.pre) = p
p.pre = this
p.suc = next (=this.suc)
Если посмотреть на код, то там ровно это и записано:
p->suc = suc (т.е. p->suc = this->suc, т.е. next)
p->pre = this (тут без вопросов)
suc->pre (т.е. this->suc->pre = next ->pre) = p
suc (т.е. this->suc) = p
Вот собственно и все. Рекомендую при построении динамических структур рисовать такие же диаграммки - сразу же голова просветляется, какой указатель куда сунуть...

Ответ отправлен: 24.07.2002, 19:13
Отправитель: Ayl


Отвечает Dzik

Приветствую Вас, bik!
Цикл циклический, вот указатель suc сразу и настраиваем!


Ответ отправлен: 24.07.2002, 18:13
Отправитель: Dzik


Отвечает Sinner

Доброе время суток, bik!
В конечном итоге получается:
list_head->suc=b;
a->pre=b;
b->suc=a;
b->pre=list_head;


Ответ отправлен: 25.07.2002, 05:25
Отправитель: Sinner


Отвечает vitya

Доброе время суток, bik!
весь прикол в том, что ты думаешь, что он добавляет список в конец, а он всовывает его в середину.
(а указывает на б);
а<->b, теперь вставляем c, а<->c<->b, теперь, нужно обновить как указатели b так и а, поэтому b->pre = c;
c->suc = suc; suc = p; и т.д.

Ответ отправлен: 25.07.2002, 08:27
Отправитель: vitya


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

Доброе время суток, bik!

Маленький комментарий к ответам экпертов.
Судя по вопросу, читатель не знаком с терминологией или не понял сути предмета. "указатель нового класса на следующий ставится на следующий текущего ..." - это неправильно. Неправильно применён термин "класс". Надо было сказать "экземпляр класса" или "объект".
bik, будь добр, почитай ещё разок книгу Страустрапа. Я уверен, станет легче. Тем более, что списки в ООП - не самое сложное.

С уважением, Артём.

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



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (43)
C / C++ (30)
Perl (8)
Delphi (16)
Pascal (29)
Basic / VBA (11)
Java / JavaScript (10)
PHP (8)
MySQL / MSSQL (10)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (35)
"Железо" (35)
Поиск информации (18)
Администратору
Windows NT/2000/XP (17)
Linux / Unix (14)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (7)
КоАП (2)

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




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

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

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

В избранное