Yoko
http://forum.yoko.com.ua/

Сравнение переменной... (даже не знаю как это назвать)
http://forum.yoko.com.ua/viewtopic.php?f=3&t=14269
Page 1 of 2

Author:  ADEPT_ABP [ 2009-01-09 20:04:06 ]
Post subject:  Сравнение переменной... (даже не знаю как это назвать)

Имеется строка:
Code:
if uo.getgraphic('finditem')=='0x0EED' || uo.getgraphic('finditem')=='0x13B5' then

Можно ли сделать на подобии:
Code:
if uo.injournal("You put|You can't") then

Короче как минимумом строк сделать проверку ненужных/нужных типов? Я что-то не могу понять... и найти тоже не могу... :(

Author:  Millerbeer [ 2009-01-09 20:44:38 ]
Post subject: 

а не проще сразу искать нужные типы, забитые в таблицу?

Author:  ADEPT_ABP [ 2009-01-09 21:00:57 ]
Post subject: 

Проще, но меня интересует именно это. :wink:

Author:  Grin [ 2009-01-10 08:07:54 ]
Post subject: 

Code:
sub main()
   #uo.Print(uo.GetGraphic("self"))
   uo.Print(str(TypeIn("0x0191|0x0191|0x0191|0x0191|0x0190|0x0191|0x0190|0x0191", uo.GetGraphic("self"))))
end sub

sub TypeIn(types, type)

   var types_size = int((len(types)+1)/7)
   var index = 0

   while types_size
      if mid(types, index*7, 6) == type then
         return index
      end if
      index = index+1
      types_size = types_size-1
   wend
   return -1

end sub

Author:  ADEPT_ABP [ 2009-01-10 09:15:41 ]
Post subject: 

Значит только так? Эх. Но всё равно Grin спасибо. :)

Author:  ADEPT_ABP [ 2009-01-10 10:00:18 ]
Post subject: 

Grin, ты подтолкнул на мысль.
Code:
sub main()
var z=uo.getgraphic('self')

if types(z)==true then
uo.print('Совпадает')
else
uo.print('Не совпадает')
endif

end sub

Sub types(type)
var a

dim t[2]
t[0]='0x0191'
t[1]='0x0190'

for a=0 to 1
if type==t[a] then
return true
endif
next
end sub

Author:  Savage [ 2009-01-10 10:29:27 ]
Post subject: 

Первоначальная конструкция проще с точки зрения машинного языка. Мощь проца некуда девать? :lol:

Author:  ADEPT_ABP [ 2009-01-10 10:33:45 ]
Post subject: 

Ага... понятно. Я конечно не в курсе чем сложнее мой вариант для машины, но думаю 2-х ядер проца на ето хватит. :)

Author:  Savage [ 2009-01-10 10:38:28 ]
Post subject: 

Владислав Пирогов "ASSEMBLER для WINDOWS" 4-е издание. Очень рекомендую. Хорошая книжка, читается легко, примеры наглядные и интересные. Вообщем вправит мозг в нужном направлении в области программирования.

Author:  ADEPT_ABP [ 2009-01-10 10:50:17 ]
Post subject: 

Я конечно понимаю учиться никогда не поздно, есть одно но, в школе у меня отбили желание учиться. Теперь я учебную литературу не воспринимаю как полезную информацию, голова и так почти постоянно болит. Но я всё же попытаюсь хотя бы найти и скачать(покупать не на что), может быть даже почитаю. :D
P.S. Кстати что такое
Code:
int(len(...))

Author:  Savage [ 2009-01-10 10:59:40 ]
Post subject: 

целая часть числа(длина())

Author:  ADEPT_ABP [ 2009-01-10 11:37:17 ]
Post subject: 

... я так понимаю
Code:
int((len(types)+1)/7) 

это
Code:
int(56/7)

то есть
Code:
int(8)

Целая часть числа 8 что ли? Как-то сложно для понимания...

Author:  Savage [ 2009-01-10 12:19:48 ]
Post subject: 

Ну да. Наверное можно её убрать.

Author:  admir [ 2009-01-10 14:59:18 ]
Post subject: 

Грин как всегда виртуоз!!!
Смотрю на код и восхищаюсь :)

я бы сделал через массивы, Но часто для работы со списком пользуюсь функцией едреда, слегка переделанной для себя.
Code:
Sub GetWord( st, nom )
    ; (c) Edred
    ; Возвращает слово из строки str за номером num
    ; если такого слова нет - возвращаем ''
    ;
    ; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
    ; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
    ;
    VAR tmpst, i, dlin, kol = 0, start = 0
    dlin = len( st )
    For i=0 To dlin - 1
        If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
            kol = kol + 1
            If kol == nom Then
                ; это первый пробел после нужного нам слова
                tmpst = mid( st, start, i - start )
                return tmpst
            Else
                While mid( st, i, 1 ) == ' '
                    i = i + 1
                Wend
                If kol == nom - 1 Then
                    start = i
                Endif
            Endif
        Endif
    Next
    tmpst = ''
    return tmpst
endsub


Но у грина проще!!
Можно добавить 1 переменную характеризующую длину элемента.
А можно в приниципе разделить для типа и для ИД.

Author:  Grin [ 2009-01-10 16:21:13 ]
Post subject: 

Целая часть берется для "защиты от дурака", если формат строки не правильно соблюден.

Поповоду мощи компа... если уж лишняя сотня операторов будут "грузить" проц, то переходим на Дос:)

Не надо из крайности в крайность кидатся... Классы тоже не для экономии процессорных ресурсов сделаны.

Author:  ADEPT_ABP [ 2009-01-10 18:43:32 ]
Post subject: 

Grin wrote:
Не надо из крайности в крайность кидатся... Классы тоже не для экономии процессорных ресурсов сделаны.

А можно узнать из какой крайности в какую, и кто, кидается? И что за классы? :D А то я не понял ничего... :cry:

Author:  Grin [ 2009-01-10 19:40:21 ]
Post subject: 

:) По ассемблеру Юров норм:)

Author:  ADEPT_ABP [ 2009-01-10 23:14:32 ]
Post subject: 

Знаете, вся ошибка тех, кто рекомендует какую-нибудь литературу, это - начальный опыт/знание яз.прогр. перед прочтением той или иной литературы. Я не имею никаких знаний о яз.программирования, поэтому многие слова/термины для меня пустой звук. Пример(Пирогов Владислав Юрьевич.
Ассемблер для Windows. — М.: Издатель Молгачева С.В., 2002. —552 с., ил.):
Quote:
Часть I. Основы 32-битного программирования в Windows
Глава 1. Средства программирования в Windows
I

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

Прежде всего замечу, что в названии главы есть некоторая натяжка, т.к. технологии трансляции и в MS DOS, и в Windows весьма схожи. Однако программирование в MS DOS уходит в прошлое.

Двум стадиям трансляции соответствуют две основные программы: ассемблер ML.EXE и редактор связей LINK.EXE 7 (или TASM32.EXE и TLINK32.EXE в Турбо Ассемблере).

Пусть файл с текстом программы на языке ассемблера называется PROG.ASM, тогда, не вдаваясь в подробный анализ, две стадии трансляции будут выглядеть следующим образом: c:\masm32\bin\ml /c /coff PROG.ASM - в результате появляется модуль PROG.OBJ, а также c:\masm32\bin\link /SUBSYSTEM:WINDOWS PROG.OBJ - в результате появляется исполняемый модуль PROG.EXE. Как Вы, я надеюсь, догадались ( :) Я долго ржал - вообще непонял о чём это?) /с и /coff являются параметрами программы ML.EXE, a /SUBSYSTEM:WINDOWS является параметром для программы LINK.EXE. О других ключах этих программ более подробно см. Гл. 1.5.

На данном примере, что вы посоветуете прочитать перед подобной литературой?

Author:  Grin [ 2009-01-11 00:06:53 ]
Post subject: 

тебе дали 2-х авторов.
Теперь надо обучить как книги выбирать?:) а потом как их читать и тд?:)

Хватит морозить... да и нах тебе ассемблер сдался?

Author:  Savage [ 2009-01-11 09:32:38 ]
Post subject: 

Вообще никогда не думал о помеченном красным. :D Просто запускаешь батник:
Code:
@echo off
f:\masm32\bin\ml /coff /c %1.asm
f:\masm32\bin\link /SUBSYSTEM:CONSOLE %1.obj
@echo on

название_батника имя_программы_без_расширения
например: m test
это и есть технология трансляции и редактор связей.

Page 1 of 2 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/