Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 616
от 15.08.2003, 18:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3922 Отправлено ответов: 11617 Активность: 296.2 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Евгений Иванов Статус: Опытный Общий рейтинг: 147.07 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 135.12 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 113.19 [Подробней >>] |
dimka Статус: Опытный Общий рейтинг: 150.92 Телефон: (231)-4-43-85 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.15 URL: Программирование [Подробней >>] |
Алексей Статус: Доверительный Общий рейтинг: 104.87 [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.08 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 118.23 [Подробней >>] |
Andrew Vext Статус: Профессиональный Общий рейтинг: 105.22 [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 113.56 [Подробней >>] |
Lynx Статус: Опытный Общий рейтинг: 117.76 Телефон: (8442) 750522 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 118.96 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3887. Приветствую всех ! Помогите кто чем может... :-) Нужно переделать ДРОБНОЕ число написанное в текстов... (ответов: 3)
Вопрос № 3888. Здравствуйте. Задавал врос в прошлой рассылк: Решил написать, ибо проблема железная :) Установил у с... (ответов: 2)
Вопрос № 3889. Здравствуйте, эксперты! Задавал вопрос в рассылку по C++, но не получил ответа. "Приведите, пож... (ответов: 4)
Вопрос № 3890. Кто юзал IceExt? Сначала падал (SI грузил как Manual), потом 1 раз заработал, я добавил в настройке ... (ответов: 1)
Вопрос № 3891. Что такое рекурсия????... (ответов: 9)
Вопрос № 3892. Здравствуйте, уважаемые эксперты!!! Вопрос по сетевому программированию. Допустим, я написал програм... (ответов: 4)
Вопрос № 3893. Hi, я где-то торможу, но не пойму где. Надо обслужить ComboBox. Вот исходник. По идее, при нажатии к... (ответов: 4)
Вопросов: 7, ответов: 27
Вопрос № 3887 |
Приветствую всех !
Помогите кто чем может... :-)
Нужно переделать ДРОБНОЕ число написанное в текстовом поле в значение регистра, добавить к нему, например 5.07 и вставить обратно в текстовое поле.
Если кто не понял вопрос - я расписал все очень подробно,
помогите пожалуйста, ведь с этим сталкивается каждый, кто пишет программы на ассемблере:
Вначале взгляните на приложение. Предположим, что после его выполнения по смещению Buffer лежит строка "12.3" или Hex(31 32 2E 33 00) Мне нужно преобразовать строку к числовому значению, произвести нужные действия и преобразовать обратно в строку !
Т.е. если бы по смещению Buffer находилась строка "12"
или Hex(31 32 00), то после преобразования в регистре eax,
должно быть 0000000C.
add eax,5
в eax будет 00000010
После обратного преобразование из eax в строке будет "17"
или Hex(31 37 00)
С целыми числами еще как-то можно разобраться, вычесть,
например, 30h а дальше через остаток, а вот дробные - как же с ними поступить ?
И вообще, неужели нет Api по работе с преобразованием строк ?
Если у кого-нибудь есть исходники на эту тему, вышлите пожалуйста, я в долгу не останусь !
Заранее огромное всем спасибо !!!
Приложение:
Вопрос отправлен: 10.08.2003, 23:06
Отправитель: Fantomas (f-a-n-t-o-m-a-s@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Приветствую Вас, Fantomas!
1. Запятую пока оставляешь в покое
2. Преобразуешь число в целое (можно пока запятую типа стереть)
3. Затем, братан, типа того, подсчитываешь порядок числа (типа на сколько
надо разделить число, чтобы было дробное).
4. Заносишь целое число в FPU
5. Делишь его с помощью FPU на вычисленный порядок.
6. УСЁ!!!
Я уже писал о том, что нет дробных чисел; если бы ты это понял, вопрос бы
этот не задал. А может, ты и не читал архива рассылки?
Ответ отправлен: 11.08.2003, 08:29
Отправитель: Евгений Иванов
Отвечает masquer
Приветствую Вас, Fantomas!
Такая последовательность:
команды FPU + wsprintf
Ответ отправлен: 11.08.2003, 11:17
Отправитель: masquer
Отвечает ASMодей
Доброе время суток, Fantomas!
Если все делать по уму, то тебе придется преобразовать строку в вещественное число с фиксированной или плавающей точкой, а потом уже с помощью определенных правил (для фиксированной) или сопроцессора (для плавающей) выполнять с ними различные действия и преобразовывать обратно. Возможно где-нибудь есть специальные библиотеки, но у себя я их не нашел.
Однако если над числом требуется производить только сложение или вычитание, то можно обойтись и без преобразований, а работать напрямую со строкой. В этом случае придется для обоих чисел уравнять число знаков до и после запятой, добавляя нули (и если происходит сложение, нелишним будет добавить слева еще один разряд). Ну а дальше, начиная с правого конца строки для каждой цифры производим арифметические действия, запоминая переполнение или заем. Думаю программку сможешь сам написать, алгоритм здесь простой.
Ответ отправлен: 11.08.2003, 09:03
Отправитель: ASMодей
Вопрос № 3888 |
Здравствуйте.
Задавал врос в прошлой рассылк:
Решил написать, ибо проблема железная :)
Установил у себя Windows2000 (SP4), Win2003, WinXP..... и у меня возникла проблема с установкой драйверов к моему видеоадаптеру (GF4 MX440), драйвера устанавливаются, компьютер перезагружается, но всё равно я могу выбрать только 16 (256) цветов и в свойствах экрана пишется устройство VGA (причём в ресурсах диапазоны ввода вывода заняты -Диапазон ввода/вывода 03B0 - 03BB уже используется: VIA CPU to AGP Controller). В диспетчере устройств же пишется GF но с восклицательным знаком, в свойствах - PCI шина 1, устройство 0, функция 0 (хотя надо AGP?). Далее такая строка - Запуск этого устройства невозможен. (Код 10). В чем может быть дело? VIA SP последние, прошивки на мать тоже.
--------------------------------------------------------------------------------
Мать ECS L7VMM.
Via 4 in 1 последниии..AGP там же.
Дрова 40**
Кому интерестно http://forum.ru-board.com/topic.cgi?forum=27&topic=4938&start=0#2
Спасибо.
Вопрос отправлен: 11.08.2003, 05:10
Отправитель: Eugene (eugene@hbh.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает dimka
Добрый день, Eugene!
Пробей другие драйвера!!!!!!!!!!!!У меня такое было.
Ответ отправлен: 13.08.2003, 11:31
Отправитель: dimka
Отвечает Евгений Иванов
Доброе время суток, Eugene!
1. Драйвера другие (установи);
2. + AGP драйвера установи (другие);
Рассылка по Ассемблеру!
Что это за издевательство?!
Где модератор?
Вот в plugring в этом случае запрещали посылать сообщения этому стручку
на неделю!
Ответ отправлен: 11.08.2003, 09:47
Отправитель: Евгений Иванов
Вопрос № 3889 |
Здравствуйте, эксперты!
Задавал вопрос в рассылку по C++, но не получил ответа.
"Приведите, пожалуйста, пример, как с помощью сообщения WM_COPYDATA передать другому приложению картинку BMP (именно
картинку, а не путь к ней). Среда - VC++."
Так вот, если передавать указатель на картинку, то в0 втором приложении она не отображается.
Пробовал два варианта:
COPYDATASTRUCT cds;
1.
передача
hBitmap=(HBITMAP)::LoadImage(NULL,strName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
cds.lpData=hBitmap;
cds.dwData=5;
cds.cbData=sizeof(HBITMAP);
SendMessage(hWnd,WM_COPYDATA,(WPARAM)GetSafeHwnd(),(LPARAM)&cds);
прием
HBITMAP hBit=*(HBITMAP)pCopyDataStruct->lpData;
CDC* dc=GetDC();
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
dcMem.SelectObject(hBit);
dc->StretchBlt(407,265,245,150,&dcMem,0,0,200,200,SRCCOPY);
2.
передача
BITMAP Bitmap;
hBitmap=(HBITMAP)::LoadImage(NULL,strName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
::GetObject(hBitmap,sizeof(BITMAP),&Bitmap);
cds.lpData=&Bitmap;
cds.dwData=5;
cds.cbData=sizeof(BITMAP);
SendMessage(hWnd,WM_COPYDATA,(WPARAM)GetSafeHwnd(),(LPARAM)&cds);
прием
BITMAP bm=*(BITMAP*)pCopyDataStruct->lpData;
long n=bm.bmWidth;
HBITMAP hBit=::CreateBitmapIndirect(&bm);
CDC* dc=GetDC();
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
dcMem.SelectObject(hBit);
b=dc->StretchBlt(407,265,245,150,&dcMem,0,0,200,200,SRCCOPY);
В первом приложении картинка отображается нормально. Числовые данные передаются тоже правильно.
Надеюсь на Вашу помощь, Pasha
P.S. Может дело в том, что "данные, предназначенные для передачи, не должны содержать указателей или других ссылок на объекты, не доступные для программы, принимающей эти данные". Тогда как быть (нужно именно сообщение WM_COPYDATA).
Вопрос отправлен: 11.08.2003, 09:22
Отправитель: Pasha (note2pasha@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает dimka
Здравствуйте, Pasha!
Используй OLE!!!
Ответ отправлен: 13.08.2003, 11:33
Отправитель: dimka
Отвечает Евгений Иванов
Приветствую Вас, Pasha!
В каждом приложении адреса свои и не видны другом.
Это есть защита!
Первый вариант работает - его и используй.
А если нужно передать чистые данные, то используй DDE, OLE.
Или FileMapping.
Ответ отправлен: 11.08.2003, 09:59
Отправитель: Евгений Иванов
Отвечает masquer
Приветствую Вас, Pasha!
Мне смутно кажется что hBitmap, полученный в одном процессе, не будет указывать на тот же объект в другом. Используй MMF.
Ответ отправлен: 11.08.2003, 11:24
Отправитель: masquer
Отвечает Bob Johnson
Доброе время суток, Pasha!
> данные, предназначенные для передачи, не должны содержать указателей или других ссылок на объекты, не доступные для программы, принимающей эти данные
Именно. Тебе нужно загрузить всю картинку, как она есть (т.е. как файл) в память, затем занести в поле lpData адрес этого участка памяти, в поле cbData - его размер и отослать copydata. На приемной же стороне ты при получении этого сообщения ты просто считываешь полученные данные из указанного тебе участка памяти.
В общем, используй функции - GlobalAlloc, ReadFile для отправки картинки и потом что-то вроде CreateDIBSection для создания ее в другом процессе.
* EMan1.5: ---===*** Die young - live free ***===---
Ответ отправлен: 11.08.2003, 17:13
Отправитель: Bob Johnson
Вопрос № 3890 |
Кто юзал IceExt? Сначала падал (SI грузил как Manual), потом 1 раз заработал, я добавил в настройке SI загрузку модулей (DLL) для экспорта, потом после net start IceExt комп падать в синь начал (SI гружу Automatic).
Вынь2000РусSp4, DS 2.7, IceExt 0.4. В чем может быть дело?
Сайс работает нормально.
Вопрос отправлен: 11.08.2003, 09:35
Отправитель: IanPo
[Следующий вопрос >>] [Список вопросов]
Отвечает dimka
Доброе время суток, IanPo!
непонятка!! Какой у тебя Win?
Ответ отправлен: 13.08.2003, 11:14
Отправитель: dimka
Вопрос № 3891 |
Что такое рекурсия????
Вопрос отправлен: 11.08.2003, 11:38
Отправитель: crank
[Следующий вопрос >>] [Список вопросов]
Отвечает Алексей
Приветствую Вас, crank!
Подпрограмма называется рекурсивной, если она вызывает сама себя. Рекурсивной также будет процедура, вызывающая другую процедуру, которая, в свою очередь, обращается к первой процедуре.
В приложении находится пример для подсчёта факториала на Паскале с использованием рекурсии!
Приложение:
Ответ отправлен: 11.08.2003, 13:11
Отправитель: Алексей
Отвечает Евгений Иванов
Доброе время суток, crank!
Используется в ЯВУ.
На Ассемблере пишется по другому и по сути не является рекурсией, а просто
считается вызовом подпрограммы несколько раз.
На ЯВУ:
procedure MyProc(){
while (1) do{
if (!MyProc()) break;
}
.....working
if (..??..) return 0;
return 1;
}
То есть, в подпрограмме есть вызов самой себя.
Главное - условие выхода.
Очень сильно используется стек.
Надо очень много его; или пусть компиляторы поддерживают рекурсию и
соответствующим образом вызывают это дело...
На Ассемблере лучше делать так:
proc MyProc
...
endp MyProc
;-----
mov ecx, 45
m1:
call MyProc
..... working
dec ecx
jnz m1
Ты сам себе хозяин и улучшай скорость программы, как хочешь...
Удачи!
Ответ отправлен: 12.08.2003, 23:56
Отправитель: Евгений Иванов
Отвечает dimka
Здравствуйте, crank!
Подпрограмма вызывает сама себя
procedure rec(i:integer);
var
x:byte;
begin
if (i=0)or(i=1) then inc(x)
else rec(i-1);
end;
Ответ отправлен: 13.08.2003, 11:21
Отправитель: dimka
Отвечает vitya
Добрый день, crank!
это когда функция сама себя вызывает.
Ответ отправлен: 11.08.2003, 12:04
Отправитель: vitya
Отвечает Ayl
Приветствую Вас, crank!
Рекурсия - вызов функции повторно либо из самой себя (прямая рекурсия), либо из другой функции, вызванной из первой (косвенная рекурсия).
Средство очень мощное, но таящее в себе потенциальные ошибки. Самое простейшее - зацикливание, когда в рекурсивной функции не предусмотрен выход. Второе - глубина рекурсии. Так как обычно рекурсивная процедура ничем не отличается от обычной, то и функционирует она точно так же. То есть, при каждом входе в процедуру резервируется место для локальных переменных и параметры для нее передаются через стек. Так как объем стека является ограниченным, то при большой глубине рекурсии стек переполняется, что вызывает ошибку программы.
В приложении - 2 примера. Один - функция получения n-го члена ряда Фиббоначи (Fibb (n) = Fibb (n-1) + Fibb (n-2); Fibb (1) = Fibb (2) = 1), второй - печать четных и нечетных чисел (пример просто для демонстрации косвенной рекурсии).
Примеры на Паскале.
Приложение:
Ответ отправлен: 11.08.2003, 13:02
Отправитель: Ayl
Отвечает Andrew Vext
Приветствую Вас, crank!
Этокогда функция вызывает сама себя.
Ответ отправлен: 11.08.2003, 12:28
Отправитель: Andrew Vext
Отвечает Hangatyr
Приветствую Вас, crank!
Некоторый алгоритм, который вызывает сам себя для решения какой-либо задачи. При этом на каждом новом шаге решается упрощенная задача. Так делается до тех пор, пока решение не станет очевидным.
Ответ отправлен: 11.08.2003, 12:12
Отправитель: Hangatyr
Отвечает Bob Johnson
Добрый день, crank!
Последовательный вызов процедурой самой себя для достижения целей, поставленных в задачи.
* EMan1.5: ---===*** Die young - live free ***===---
Ответ отправлен: 11.08.2003, 17:15
Отправитель: Bob Johnson
Отвечает Lynx
Здравствуйте, crank!
Рекурсия = самовызов!!! :))) (Легче не стало, да???)
Расказываю на пальцах:
Рекурсия бывает двух видов: прямая и косвенная.
Прямая рекурсия подразумевает под собой, что какая то процедура вызывает сама себя.
* KakayaNit proc
* call KakayaNit
* ret
* Endp KakayaNit
- Ну это простейший примерчик (и совершено бесполезный). :)))
Косвеная рекурсия - это когда процедура №1 вызывает процедуру №2, а та, в свою очередь вызывает процедуру №1. (Ну эта цепочка может быть и длиннее).
* Pr1 proc
* call pr2
* ret
* endp Pr1
*-----------------------------------------
* Pr2 proc
* call pr1
* ret
* endp Pr2
Вот так-то :))) А вобще ты найдёшь кучу примеров использования рекурсии в любом учебнике по любому языку программирования!
Ответ отправлен: 12.08.2003, 12:24
Отправитель: Lynx
Вопрос № 3892 |
Здравствуйте, уважаемые эксперты!!!
Вопрос по сетевому программированию. Допустим, я написал программу, которая слушает
определенный порт (сокет - TCP/IP). Запускаю ее, пробую подключиться telnetом. Все в
полном порядке. Теперь пробую принять данные (recv) - В том же telnetе пишу что-нибудь,
но функция recv возвращает в буфер 1 байт (первый символ введенной строки). Как быть, если
мне нужно получить всю строку целиком? Думаю, как-то это можно сделать, ведь c web-серверами
можно работать и через telnet.
Спасибо.
Вопрос отправлен: 11.08.2003, 12:55
Отправитель: Dr.00py (stepipatov@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает dimka
Здравствуйте, Dr.00py!
Не люблю сеть!!!
Ответ отправлен: 13.08.2003, 11:24
Отправитель: dimka
Отвечает Bob Johnson
Доброе время суток, Dr.00py!
Тут причина в том, что ты руками слишком медленно нажимаешь на кнопки :) Когда ты нажимаешь первую клавишу, windows уже отправляет пакет твоей программе только с одной клавишей, затем, когда ты нажимаешь другую - windows отправляет следующий пакет и т.д.
В общем, тебе нужно в твоей программе вызывать recv до тех пор, пока ты не получишь целиком то, что тебе надо. Например, http сервер вначале получает целиком заголовок запроса (он заканчивается байтами 13, 10, 13, 10, т.е. двумя переводами строки), а потом данные запроса, если они в нем есть (их размер указывает поле Content-length). Если хочешь, посмотри исходники моего http сервера (это есть на моей странице - http://bobjohnson.nm.ru).
* EMan1.5: ---===*** Die young - live free ***===---
Ответ отправлен: 11.08.2003, 16:23
Отправитель: Bob Johnson
Отвечает vitya
Здравствуйте, Dr.00py!
Телнет посылает запрос посимвольно. Всю строчку одновременно получить не удастся, так как заранее не известен ни ее размер ни время за которое она дойдет до сервера.
Если ты работаешь с клиентом типа телнета, то приходящие данные читаются или посимвольно или сколько накопится в буфере, a конец строчки описывается, как .
Ответ отправлен: 11.08.2003, 15:24
Отправитель: vitya
Отвечает Hangatyr
Доброе время суток, Dr.00py!
Должен тебя огорчить, но все придется делать самому. Телнет не сделан для какой-то одной цели, а строка - понятие растяжимое - ее конец, в принципе, может обозначаться любым символом. Для начала определи его (символ) - это может быть и перевод строки и еще что-нибудь - а пототом вызывай recv до тех пор, пока не получишь этот символ, это и будет ее конец.
Ответ отправлен: 11.08.2003, 17:29
Отправитель: Hangatyr
Вопрос № 3893 |
Hi, я где-то торможу, но не пойму где. Надо обслужить ComboBox. Вот исходник. По идее, при нажатии кнопки Add должен текст попадать в list ComboBox'а. Но не попадает :(
Приложение:
Вопрос отправлен: 11.08.2003, 15:16
Отправитель: Beeblebrox (beeblbrx@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает dimka
Доброе время суток, Beeblebrox!
Компилируй Masm'ом!!!!
Ответ отправлен: 13.08.2003, 11:28
Отправитель: dimka
Отвечает Евгений Иванов
Доброе время суток, Beeblebrox!
// windlg.rc
#define DS_CENTER 0x0800L
#define DS_MODALFRAME 0x80L
#define DS_3DLOOK 0x0004L
#define WS_MINIMIZEBOX 0x00020000L
#define WS_SYSMENU 0x00080000L
#define WS_VISIBLE 0x10000000L
#define WS_OVERLAPPED 0x00000000L
#define WS_CAPTION 0xC00000L
#define CBS_HASSTRINGS 0x200L
#define ID_DIALOG 8
#define IDC_EDIT 0
#define IDC_ADD 2
ID_DIALOG DIALOG 10, 10, 208, 65
STYLE DS_CENTER | DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED
CAPTION "ComboBox example"
{
COMBOBOX IDC_EDIT, 10, 12, 102, 79, CBS_DROPDOWN | CBS_SORT | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Add", IDC_ADD, 139, 11, 52, 13
}
Вопрос отправлен: 11.08.2003, 15:16
Действителен до: 15.08.2003, 15:16
Отправитель: Beeblebrox (beeblbrx@mail.ru)
;-------------------------------------------------
1.Здесь надо возвращать нуль!
call SetFocus
;!! jmp return1
jmp return0
2.wID = LOWORD(wParam); // item, control, or accelerator identifier
младшее слово! AX!
;!! cmp eax,IDC_ADD
cmp ax,IDC_ADD
je _add
Удачи!
Ответ отправлен: 12.08.2003, 23:56
Отправитель: Евгений Иванов
Отвечает masquer
Доброе время суток, Beeblebrox!
Хм, скомпилировал масмом - никаких проблем, все нормально, добавляет :) Может, ну его, этот борланд? :))))
Ответ отправлен: 11.08.2003, 17:36
Отправитель: masquer
Отвечает _vt
Приветствую Вас, Beeblebrox!
Ооочень долго возился и нашел!!! Теперь работает везде!! Посмотри, чему у тебя равно CB_ADDSTRING ??? У Борланда в windows.inc стоит
CB_ADDSTRING = (WM_USER+3)
причем
WM_USER = 0400H
вот отсюда ты это и взял !!!
В winuser.h как у M$, так и Borland стоит правильное значение
#define CB_ADDSTRING 0x143
В windows.inc из пакета MASM32 тоже правильно!!
Поменял я на правильное значение и теперь компилируется и тасмом и масмом!!
Так что выкинь windows.inc производства Борланда!! А также свой def32.inc!!!
P.S. Самое смешное, что я в свой def32.inc сначала тоже вставил эти определения из борландовского windows.inc, и несколько часов искал ошибку в коде, пока не прочитал ответ Masquer'а и не попробовал MASM32!!!
P.P.S.
2Masquer: Borland - forever!
---===*** E-Man - forever! Win2k - forever! WinXP - must die!***===---
Ответ отправлен: 12.08.2003, 02:14
Отправитель: _vt
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (37) C / C++ (28) Perl (3) Builder / Delphi (22) Pascal (28) Basic / VBA (12) Java / JavaScript (8) PHP (7) Криптография (10) WinAPI (19) |
Пользователю Windows 95/98/Me (47) Windows NT/2000/XP (57) "Железо" (42) Поиск информации (27) |
Администратору Windows NT/2000/XP (27) Linux / Unix (12) |
Юристу Гражданское право (9) Семейное право (6) Трудовое право (7) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||