Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 14.01.2002, 20:16   #1   
Модератор
 
Сообщений: 665
Регистрация: 09.01.2002

Kerish вне форума Не в сети
Cool Если есть какие-нибудь вопросы,то обращайтесь к Керишу!

Subj
  Ответить с цитированием
Старый 18.01.2002, 10:39   #2   
Форумец
 
Сообщений: 14
Регистрация: 13.01.2002

zooy вне форума Не в сети
Post

Ты ж на VB програмируешь, может знаешь, по какому признаку можно однозначно идентифицировать компьютер в сети, и как это можно сделать на VB
  Ответить с цитированием
Старый 17.04.2002, 21:59   #3   
Модератор
 
Сообщений: 665
Регистрация: 09.01.2002

Kerish вне форума Не в сети
Smile

Можно однозначно идентифицировать компьютер в сети по его IP.
Если хочешь могу код выслать...
  Ответить с цитированием
Старый 18.04.2002, 08:25   #4   
Форумец
 
Сообщений: 4
Регистрация: 15.01.2002

Quench вне форума Не в сети
Lightbulb

Кериш,читал название топика.
Очень хочу разобраться, как Асм подключать к VB через dll ку.
Byas у меня не много, точнее нет ни шиша.
перевод хелпа в голове мне не добавил.
Хочется разобраться с написанием dll ки на асме под винда.
Что такое def файл и так далее.
И может знаешь или встречал где в инете книга Зубква"Ассемблер..."
есть.
Есть надежда, что пороблему мою может она снять.
Спасибо.
  Ответить с цитированием
Старый 18.04.2002, 20:33   #5   
Модератор
 
Сообщений: 665
Регистрация: 09.01.2002

Kerish вне форума Не в сети
Post

Quench,вот материал с одного сайта,извини за перевод с английского.Переводил мой тупой электронный переводчик...

Смешивание Ассемблера с Visual Basic

Эта обучающая программа поможет объяснять основы и также подробности, необходимые, если Вы хотите смешать ассемблерный код с Visual Basic. Эта обучающая программа не будет объяснять, как использовать ассемблер. Если Вы должны узнать, что, то Вы можете находить много обучающих программ и помогать в другой трансляции(блоке) связанным сайтам. Код, используемый здесь сделан с NASM 0.97, который является свободно доступным на internet (но справка для этого не настолько общая(обычна)). Быть Предупредите однако: Смешивание ассемблерного кода с вашими программами visual basic может серьезно делать это намного тяжелее, чтобы отлаживать и использовать. Ошибка может легко вызывать полную среду Visual Basic на завершение, закреплять компьютер, делать GPF'S, и даже перезапускать компьютер (я нашел все ими из жесткого пути!). Не упоминать, что не имеется любых средств отладки что Вы можете использовать, чтобы установить проблемы. Фактически, если ваш ассемблерный код не восстанавливает все после того, как это сделано, вещи подобно использованию окна Debug в Visual Basic вмешаются, и заставят VB среду закрывать. Ассемблер может быть очень труден изучать и программировать. Однако, это может также быть проще в некоторых случаях(делах), потому что Вы добираетесь, намного лучше понимание что Вы делаете. Истинная история: я сначала запустил программировать с QBASIC. После использования QB для приблизительно 2 года я сделал трехмерный куб вращения. Я решил использовать Visual Basic после этого. Требуется меня 1-летний прежде, чем я мог записывать трехмерную программу в VB. Теперь, когда я знаю, как использовать это, требуется меня только 4 месяца, чтобы записать новую версию. Однако, требуется меня примерно 4 недели в целом, чтобы изучить все необходимый быть способно записать трехмерную программу в чистом ассемблере. Это - то, потому что я узнал точно, какой различные функции делали, так что я знал, точно как использовать их. Это доказывает, что ассемблер может быть намного более быстрый, чтобы учиться, даже чем QBASIC.
В чем Вы нуждаетесь:
* Visual Basic (я только пробовал с VB5, но VB4 или выше должен работать). Если Вы, dont имеют Visual Basic, то Вы можете получить Заказное Издание Управления бесплатно в сайте Microsoft. * NASM (я только пробовал с v0.97). Если Вы, dont имеют NASM, то Вы можете получить это бесплатно в NASM сайте. * простой текстовый редактор. Записная книжка удовлетворяет меня прекрасный, но Вы можете использовать то, что Вы хотите, пока это не размещает специальные символы форматирования в ваш текст.
Связи(ссылки):
*Get NASM (свободный) (http://www.cryogen.com/Nasm/) *Get СРЕДА СОВМЕСТНЫХ ВЫЧИСЛЕНИЙ Visual Basic VBA51 сайт (свободного) *Patrice Писца. Этот сайт показывает, как использовать DirectX с VB, используя Patrice Библиотеки Типа Писца. Это также показывает, как использовать ассемблер DLL'S в VB, смешанном с DirectX, становиться превосходным, быстро трехмерная графика. *Unlimited Факты. Сайт с некоторыми большими обучающими программами на графике и игре связал программы, включая обучающие программы при использовании метода доступа к пикселам изображений, как будто это был нормальный массив. При смешивании этого метода и трансляции(блока) DLL'S может показывать большим результатам. *VB Проводник. Хорошая страница для изучения VB *VB Помощник. Другая хорошая VB страница с многими советами(предупреждениями). *Hugo страница АССЕМБЛЕРА DOS Елиаса. Некоторая графика / игра связала страницы. *NASM справочный файл ("Nasmdoc.hlp")
*Newsgroups для программирования АССЕМБЛЕРА типа: comp.lang.asm.x86 alt.lang.asm comp.os.ms-windows.programmer.win32
*Newsgroups для VB, программирующего типа: microsoft.public.vb.winapi microsoft.public.vb.winapi.graphics Microsoft public.win32.programmer.gdi
*Search для ' программирование трансляции(блока) ' от любого механизма поиска (типа Lycos или Yahoo)
Использование NASM с VB:
Чтобы использовать NASM с Visual Basic, Вы должны делать DLL с NASM, и затем Вы можете использовать это, DLL с Visual Basic (VB3 не позволяет Вам использовать dll's). Вы можете использовать DLL'S, Вы сделали, тот же самый путь как будто Вас при использовании системы Windows DLL, типа 'user32.dll' или 'gdi32.dll'.
Делать DLL с NASM, имеются три шага в это: Вы сначала должны записать ваш код NASM, тогда Вы должны компилировать ваш код NASM и связывать это с компоновщиком Visual Basic. Тогда Вы можете использовать это с VB.
Например, здесь мы будем делать DLL, чтобы добавить два Длинных целого числа (DWords): Сохраните(экономьте) следующий код в текстовом редакторе как myDLL.asm в новый каталог, типа C:\VB5\samples\ASM: (если Вы собираетесь копировать и вставлять этот код отсюда, выберите это от левого края(ребра) этого окна, иначе переводы каретки будут наполнены.)


SEGMENT code USE32 GLOBAL _DllMain
;Just a small routine that gets called. _DllMain: moveax, 1 ;Dont worry about this. retn12
;
;Sub addLongs (ByRef number1 As Long, ByVal number2 As Long) GLOBAL addLongs addLongs: enter 0, 0 move ax, [ebp+8]
;pointer to number1 move cx, [eax]
;ecx = number1 adde cx, [ebp+12]
;ecx = number1 + number2 mov [eax], ecx
;number1 = number1 + number2 leave retn 8
;return, with 8 bytes of arguments (2 DWords)
ENDS

Первые средства строки сообщают NASM, что это является 32 разрядной программой Windows. Это ДОЛЖНО БЫТЬ во всех вашем DLL'S, перед любым кодом. Вторая строка сообщает компоновщику, что _DLLMain будет глобальное название(имя). Компоновщик позволит тому названию(имени) называться Visual Basic. Вы должны объявить все ваши процедуры как ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ, иначе они привычка, которому б замечены Visual Basic. Третья строка имеет название(имя) (метка), называемая _DllMain, так, чтобы компоновщик знал, где _DllMain. Две строки программы, что _DllMain просто при создании eax равняться 1, при удалении 12 байтов для его параметров и затем при возвращении кто бы ни то, назвал подпрограмму. Это - специальная подпрограмма, относительно которой Вы dont должны волноваться. Первая строка 2-ых стандартных запусков с a; (точка с запятой), чтобы показать той остальной части строки - инструкция замечания, точно так же как ' (apostraphe) делает в Visual Basic. Строка должна только там показать тому, как что это назвалось бы в Visual Basic. Обратите внимание, что первый параметр пропускает ссылка(справочники), в то время как другой параметр пропускает значение. Это означает, что фактическое расположение памяти первого параметра послано, и фактическое значение второго параметра послано. Первая переменная послана ссылкой(справочниками), так, чтобы это могло быть изменено(заменено). Второй переменный косяк, быть изменено(заменено) этой подпрограммой, потому что мы только имеем ее значение, но мы имеет фактическое расположение первой переменной, потому что это пропускает ссылка(справочники). Вторая строка (2-ой подпрограммы) показы, что addLongs также собирается быть меткой что Visual Basic будет способен видеть. Третья строка показывает, где addLongs. Четвертая строка сохранит(будет экономить) регистр ebp, и заставлять это указывать на начало стека вызовов. (Это только необходимо, если Вы собираетесь использовать параметры). EBP теперь направит на вещи подобно адресу памяти вызывающей программы, и также параметры, которые были посланы. EBP+8 укажет на первый параметр. Так как Windows 9x - 32 бит, каждый параметр должен быть 32 бита, который является 4 байтами. Так как параметры - один за другим, тогда следующий параметр будет в EBP+12, и третий параметр будет в EBP+16, затем в EBP+20, и т.д ... пятая строка заставит регистр ЭЛЕКТРОННОГО КОММУТАТОРА равняться первому параметру. Так как первый параметр пропускала ссылка(справочники), ЭЛЕКТРОННЫЙ КОММУТАТОР будет равен расположению в памяти, где первая переменная сохранена. Шестая строка заставит регистр ECX равняться значению первого параметра. Седьмая строка добавит значение второго параметра к ECX, и так что ECX будет тогда проводить(держать) значение первого параметра плюс второй параметр. Строка eigth заставит первую переменную, которая будет равняться ECX, который был эти два числа(номера), добавленные вместе. Поэтому 'number1', который используется программой в Visual Basic, будет теперь иметь 'number2', добавленный к этому. Секунда, которую последняя(прошлая) строка подпрограммы отменит, что вводит, делала. Это должно использоваться в подпрограмме, если вводят, использовался. Последняя(прошлая) строка 2-ой подпрограммы отмечает конец подпрограммы, и это возвратит назад вызывающей программе (Visual Basic), и это должно также показать количеству байтов параметра, которые были посланы этому. Самая последняя(прошлая) строка (КОНЦЫ) означает, что это - конец всего вашего кода для файла.
Как только это все напечатано (названия(имена) с учетом регистра в NASM!) и сохраненный, готово быть откомпилированным. Чтобы компилировать это, я сделал пакетный файл в том же самом каталоге, называемом "MakeDLL.bat", чтобы автоматически напечатать параметры для компилирования DLL'S, и я помещал следующее в это:
C:\Nasm\NasmW.exe -f coff myDLL.asm C:\VB5\Link.exe /dll /export:addLongs /entry llMain myDLL.o del myDLL.exp del myDLL.lib del myDLL.o
Первые две строки - важные, но последние(прошлые) три строки удалят потраченные впустую файлы, если Вы dont используете их. Первая строка компилирует ваш ассемблерный код. Параметры к этому говорят, что это должно быть откомпилировано к формату COFF, который является форматом, который компоновщик Visual Basic использует. Очевидно, Вы должны заменить каталог NASM (в коричневом) с каталогом, где это находится на вашем компьютере. Если Вы хотели видеть машинную распечатку кода вашего DLL, то Вы можете также добавлять ' -l myDLL.lst ' на конец первой строки. Вторая строка свяжет ваш формат '.o COFF ' файл в '.dll ' файл, который может использоваться с Visual Basic. Первый параметр '/dll ' сообщает этому делать это DLL файлом. Без этого, это будет делать EXE файл. После того, как это, /export:addLongs говорит, что название(имя) ' addLongs будет видимо к Visual Basic. Вы должны делать это для каждой из ваших подпрограмм в DLL, иначе привычка Visual Basic быть способными найти их. Следующий параметр '/entry llMain ' говорит, где, что имеется ' DLLMain ' подпрограмма. Это должно всегда использоваться. Последний(прошлый) параметр ' myDLL.o ' должен всегда быть там, показывать какой файл связаться. Очевидно, Вы должны заменить каталог, данный здесь (в коричневом) с каталогом Visual Basic на вашем компьютере, который должен иметь файл, называемый ' link.exe '. Это должно компилировать и связывать ваш файл АССЕМБЛЕРА в DLL файл. Использование пакетного файла подобно этому может быть очень удобно, потому что Вы будете должны выполнить это, каждый раз Вы делаете любую модификацию к вашему коду ассемблера. Очевидно, чтобы использовать компилируют различный NASM файл, Вы были бы должны измениться везде, где это говорит ' myDLL ' к тому, что новый файл называется, и изменять(заменять) '/export ' подпрограммы. Как только Вы имеете, сохраняют(экономят) этот пакетный файл, Вы можете выполнять это. Много сообщений подойдут на экран, в то время как это компилирует и соединение. Вы должны статься знакомыми с тем, что это говорит, когда все работает, так что Вы можете быстро сообщить, когда кое-что пошло не так, как надо. (Dont волнуются, говорит ли компоновщик, что '_DllMain ' - не ' __ stdcall ' с 12 байтами параметров. Я могу только избавляться от этого, делая EXE файл вместо DLL файла). Вы должны теперь иметь файл, называемый " myDLL.dll "
Вы можете теперь использовать DLL в Visual Basic, точно так же как любой другой DLL. Делайте новый проект EXE в Visual Basic. Сохраните(экономьте) это в тот же самый каталог как DLL файл, который Вы сделали. Напечатайте следующее:

Option Explicit
Private Declare Sub addLongs Lib "samples\ASM\myDLL" (ByRef number1 As Long , ByVal number2 As Long)
Private Sub Form_Click()
Dim x As Long, y As Long
x = 200
y = 5
Print "x = "; x
Print "y = "; y
addLongs x, y
'If it reached this line, then its probably perfect.
Print "Added y to x, so now x = "; x
'The answer better be 205, otherwise you stuffed something up! End Sub

Надеюсь это тебе поможет!

[ 18-04-2002: Сообщение отредактировал: DrIQ ]</p>
  Ответить с цитированием
Старый 06.05.2002, 15:09   #6   
олдовый дядька
 
Аватар для macros
 
Сообщений: 212
Регистрация: 22.04.2002
Возраст: 50

macros вне форума Не в сети
Post

Если есть какие-нть вопросы???
Я вот только что тред поднял с вопросом о скрипте для html, поможешь???
  Ответить с цитированием
Старый 07.05.2002, 21:42   #7   
Модератор
 
Сообщений: 665
Регистрация: 09.01.2002

Kerish вне форума Не в сети
Unhappy

Извини,но я опозорюсь.
Ничем помочь немогу.
Я в HTML-скриптах не силен...Я только чистым VB силен!
А ты по разным сайтам лазил,где скрипты лежат?
Зайди на <a href="http://www.ya.ru" target="_blank">www.ya.ru</a> и набери "VB скрипты скачать" или "Скрипты скачать"
Может найдешь чего...
  Ответить с цитированием
Старый 07.05.2002, 22:24   #8   
Администратор
 
Аватар для DrIQ
 
Сообщений: 21,988
Регистрация: 09.10.2001
Возраст: 44

DrIQ вне форума Не в сети
Post

нужно срочно привлечь WEB - программеров - мож пива поставить...
  Ответить с цитированием
Старый 08.05.2002, 08:37   #9   
олдовый дядька
 
Аватар для macros
 
Сообщений: 212
Регистрация: 22.04.2002
Возраст: 50

macros вне форума Не в сети
Post

Ну дык дайте мне этих программеров!!!
Где они тут водятся поблизости что пива можно было им налить?
  Ответить с цитированием
Старый 26.11.2002, 00:48   #10   
Форумец
 
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 39

LSL вне форума Не в сети
Question

Есть массив A(1 to 10,1 to 10)
Заполнен значениями 0,1,2 или 3

Нужно найти область окружённую
единицами, и посчитать сколько
в этой области элементов.

Окружать можно по гор.и диагон.

Первая часть задачи похожа..
на алгоритм закраски произвольной
фигуры.. ну как в кубэйсике,пэинте,
фотошопе..

Помогите написать игрушку.
Может кто ссылки на эти алгоритмы
знает ..
  Ответить с цитированием
Старый 06.01.2003, 17:24   #11   
Форумец
 
Аватар для psih
 
Сообщений: 30
Регистрация: 25.12.2002

psih вне форума Не в сети
Post

DrIQ MAcroS Дык вот мы. Где пиво? (:

2Kerish Вопросец следующий. Ты программил DirectX на VB6? Если да, то как мне, используя только возможности DX, точнее DirectDraw узнать цвет отдельногоьпикселя на поверхности! То есть нужна функция, в которую передаются координаты, X и Y, и имя поверхности, а она (функция) возвращает значение цвета пикселя в данных координатах на данной поверхности!!! А тоя уже заимелся, чессное слово!!! (:
  Ответить с цитированием
Старый 06.01.2003, 17:31   #12   
Форумец
 
Аватар для psih
 
Сообщений: 30
Регистрация: 25.12.2002

psih вне форума Не в сети
Post

LSL О, игродел!!! (: Прикольно!!! Только вот писать игру на VB это полнейший геморой. И вообще неблагодарное занятие. Лучше уж ты Дельфи бы взял, если на С/С++ не способен!!! (:

Удачи тебе!!! (:
  Ответить с цитированием
Старый 06.01.2003, 22:08   #13   
Форумец
 
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 39

LSL вне форума Не в сети
Post

ПсихЪ ёу диджэи
Не фига не геморой..
Си - системный язык.. мне не архиватор писать..
Да и я пишу не на си,дельфи,бэисике.. а на
директ иксе и это главное...
Преимущества бэисика:
Надёжнее чем си, проще, готовый продукт гораздо
быстрее написать и отладить..
А про медлительность беисика.. гонево всё !

А чем же дельфи лучше ?
Дельфи - умрёт.. у него нет будущего..
Микрософт НЕПОБЕДИМ и никуда не деться ..

Будущее за .NET А вот там и беисик (!)
А играл ли ты в игру ROX на VB+DX написана ? !!!

--
Где же ты асмовая молодость
  Ответить с цитированием
Старый 07.01.2003, 09:39   #14   
Форумец
 
Аватар для psih
 
Сообщений: 30
Регистрация: 25.12.2002

psih вне форума Не в сети
Post

LSL В ROX не играл, кидай линк, посмотрю, но я и сам программлю ДиректИкс для Васика. Поэтому говорю как вижу. На смерть дельфи мне наплевать, а вот на С гнать не стоит. Тот же ДиректИкс, но программируемый средствами С++ работает гораздо шустрей. К тому же ДиректИкс - это всего-лишь графика, звук и так далее, основные функции тебе так или иначе придётся писать средствами языка. И вот тут начнуться тормоза!!!

Нет, если ты пишешь какую-нибудь логическую игрушку с рабочим массивом не превышающим 30 н 30 и не использующую одновременный просчёт и вывод большого колличества спрайтов (глядя на твою задачку), то возможно ты и прав. Но попробуй написать что-либо более серьёзное (читай сложное) и всё!!! Васик сдуется и даже специальные библиотеки ДиректИкс под Васик не помогут. Так что думай сам. А алгоритм твой реализовать достаточно просто, подумай немного и сам поймёшь, как это сделать! Как материал для размышления найди литературу по алгоритмам нахождения кратчайшго пути.
  Ответить с цитированием
Старый 07.01.2003, 22:22   #15   
Форумец
 
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 39

LSL вне форума Не в сети
Post

ПсихЪ Нет, нет... не говори это ..врёшЪ !
Если бы я ROX не видел .. согласился бы с тобой.
Но эта игра СЛОЖНАЯ ! НАВОРОЧЕННАЯ ! И на бэисике написана ! Там массивы не 30 на 30 !!

Жаль я её на диске с журнала каком-то достал !
~ 10 мегабайт
Знаю сайт: <a href="http://www.safrosoft.com" target="_blank">www.safrosoft.com</a> !
Авторы отечественные !
  Ответить с цитированием
Старый 08.03.2003, 19:13   #16   
Registered User
 
Аватар для Славик
 
Сообщений: 10
Регистрация: 05.03.2003
Возраст: 39

Славик вне форума Не в сети
Question

А такой вопрос ____КАК перевести прогу написанную на Паскале в Delphi &&&????
  Ответить с цитированием
Старый 08.03.2003, 19:41   #17   
Gross
 
Аватар для Grossmeister
 
Сообщений: 985
Регистрация: 10.05.2002
Возраст: 40
Записей в дневнике: 7

Grossmeister вне форума Не в сети
Post

Strannik Что значит перевести?
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind