Снова о тексте

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Снова о тексте

Сообщение Greis » 24.05.2006 (Ср) 7:56

Может не сильно камнями закидаете..да пусть закидаете, но сил бороться с ним в одиночку уже нет :( Малая часть строки
Код: Выделить всё
={{{{[adena];21;30;100}};90};{{{[apprentice's_shoes];1;1;63.7931};{[cloth_shoes];1;1;12.069};{[leather_sandals];1;1;12.069};{[short_gloves];1;1;12.0689}};32.9076};{{{[stem];1;1;75};{[suede];1;1;25}};3.9186}}

Требуется: В первом блоке найти 21 и 30 умножить на х...нахожу так
A() = Split(stroka, ";")
остальное найти число после }}; умножить на у. Вот здесь ума не хватает :( как сделать. Пыталась с помощью InStr, Mid находить каждое значение, но получается огромное кол-во кода...может кто подскажет как попроще.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 24.05.2006 (Ср) 8:31

А можно посмотреть на это огромное количество? Я делала подобное ч/з instr, кода как-раз таки получается мало. Но, к сожалению, исходника не осталось, а времени переписывать нету.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.05.2006 (Ср) 8:40

Найти 21 и 30 умножить на x.... Кого умножить? Почему именно 21 и 30... Или имеется ввиду, что надо найти числа в тех позициях, где в данном примере находятся 21 и 30?

Хотелось бы как более четкую формулирровку задачи, так и более четко описание структуры строки
Весь мир матрица, а мы в нем потоки байтов!

miwutka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 76
Зарегистрирован: 10.11.2005 (Чт) 16:34
Откуда: Moscow, Elektrostal

Сообщение miwutka » 24.05.2006 (Ср) 8:49

не совсем ясно, что где искать, но попробую предположить..

имхо, сначал проще разбить всю строку на блоки, используя в качестве разделителя "};{"

dim a() as String
a=split(stroka,"};{")

получим массив блоков типа: "[описание]; число; число;число}};число " . Разве не это является "единичным блоком (по смыслу)" в строке?

Далее работаем с каждым блоком (или с тем, который нужен), из него получаем нужные подстроки.
Сначала проверяем, есть ли у нас в блоке окончание "}};число" , если InSTR(a(i),"}};") есть, то вырезаем все что дальше - а это ,видимо, и будет число, которое над оумножить на у.
И ищем для умножения на х остальные цифры внутри блока, например тем же split,ом. b=split(a,";") , тогда последние три элемента будут нужными числами, или, если найдена концовка, то предпоследние =)

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 24.05.2006 (Ср) 9:00

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

miwutka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 76
Зарегистрирован: 10.11.2005 (Чт) 16:34
Откуда: Moscow, Elektrostal

Сообщение miwutka » 24.05.2006 (Ср) 9:06

это формат MPF -- My Personnal Format ))

Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Сообщение Greis » 24.05.2006 (Ср) 9:44

2!Viper! 21*х и 30*х это цифры в данном примере(в каждой строке они разные)
2miwutka Воможно я несовсем ясно изложила суть требуемого, но твоё предположение верно. Разве, что блоки нужны все т.е. }};число}.... число* У во всех блоках текста.
А формат - серверного файла и ничего от себя :)
Что б легче было понять, а то наверное опять не всё расписала. Здесь программа которая делает примерно то, что нужно. Но она делает это с ошибками и часть текстового файла, который нужно обработать.
Вложения
npc.rar
(20.43 Кб) Скачиваний: 39

miwutka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 76
Зарегистрирован: 10.11.2005 (Чт) 16:34
Откуда: Moscow, Elektrostal

Сообщение miwutka » 24.05.2006 (Ср) 9:55

ну и отлично. проходи по всем блокам в цикле.
твой эезешник ничего не дает... исходник бы..

Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Сообщение Greis » 24.05.2006 (Ср) 10:03

miwutka писал(а):ну и отлично. проходи по всем блокам в цикле.
твой эезешник ничего не дает... исходник бы..

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

miwutka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 76
Зарегистрирован: 10.11.2005 (Чт) 16:34
Откуда: Moscow, Elektrostal

Сообщение miwutka » 24.05.2006 (Ср) 10:57

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

Тут писать то нечего. скажи что конкретно непонятно?

--=GAMER=--
Фиолетовый бот
Фиолетовый бот
Аватара пользователя
 
Сообщения: 810
Зарегистрирован: 22.03.2004 (Пн) 11:29
Откуда: Владивосток

Сообщение --=GAMER=-- » 24.05.2006 (Ср) 11:20

Greis
Дюп'ом в L2 занимаемся, да?
В темноте слепец — самый надежный проводник. В эпоху безумия пусть тебя ведет сумасшедший.

rRenderer Engine
VB Wiki

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 24.05.2006 (Ср) 12:29

Код: Выделить всё
s = "{{{{[adena];21;30;100}};90};{{{[apprentice's_shoes];1;1;63.7931};{[cloth_shoes];1;1;12.069};{[leather_sandals];1;1;12.069};{[short_gloves];1;1;12.0689}};32.9076};{{{[stem];1;1;75};{[suede];1;1;25}};3.9186}}"
MsgBox Split(Split(s, "};{")(0), ";")(1) * Split(Split(s, "};{")(0), ";")(2)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.05.2006 (Ср) 12:33

Nicky писал(а):
Код: Выделить всё
s = "{{{{[adena];21;30;100}};90};{{{[apprentice's_shoes];1;1;63.7931};{[cloth_shoes];1;1;12.069};{[leather_sandals];1;1;12.069};{[short_gloves];1;1;12.0689}};32.9076};{{{[stem];1;1;75};{[suede];1;1;25}};3.9186}}"
MsgBox Split(Split(s, "};{")(0), ";")(1) * Split(Split(s, "};{")(0), ";")(2)


ужасть! сам то понял, что написал?
Весь мир матрица, а мы в нем потоки байтов!

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 24.05.2006 (Ср) 12:37

Не только понял, но и проверил :)

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 24.05.2006 (Ср) 12:43

Greis
Читерить в линейке вздумала? :twisted: :lol:
Если всё делать своими ручками, они скоро отвалятся !

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 24.05.2006 (Ср) 15:19

А просто посплитить сразу по всем возможным разделителям (";" "}" "{") и проверять число или нет. Если число, то считать его позицию. Один сплит + один пробег по полученному массиву. Что там делать со вторым (третим, пятым) числом уже без разницы. Благо структура я так понимаю вполне свободно считется от позиции числа.

Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Сообщение Greis » 24.05.2006 (Ср) 16:33

Спасибо всем кто откликнулся.
2miwutka Тот экзешник именно для изменения этого числа, думала просто наглядней будет :( ..это число в результате умножения не должно превышать 100..а он этого не делает...просто умножает.
Неясно(из-за почти полного отсутсвия знаний :) ) как от первого блока перейти ко второму нашла я первое число допустим так:
Код: Выделить всё
item() = Split(Replace(stroka, "}};", "};{"), "};{")
text1.text = item(1)
Да и с последним блоком по данному примеру не выходит :(

И для особо "умных"...если у меня есть серверные скрипты которые я хочу изменить то причём здесь читерить? К тому же ясно ж написанно программа которую я дала работает неверно! Значит у меня есть доступ к серверу, а если он у меня есть - значит наверное я имею к нему какое-то отношение. Да и как вы себе представляете читерство на удалённом сервере с помощью данного действа? На то и голова дана, что б думать прежде чем кого-то в чём-то обвинять!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.05.2006 (Ср) 16:40

Я тут подумал, а почему бы не пройтись по этому коду рекурсией с углублением на каждый {} блок.

Или может я суть проблемы не понял?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.05.2006 (Ср) 16:57

Хакер
я думаю, что ты правильно понял, просто автор такое наверное не осилит в плане реализации, а писать за него парсер влом :lol:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.05.2006 (Ср) 16:58

Greis
за адены напишу, кидай письмо в почту :wink:

Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Сообщение Greis » 24.05.2006 (Ср) 17:18

Konst_One Тебе наши адены не помогут :) Сервер локальный и стоит только потому как у пользователей нет нормальной возможности играть в инете( отвратительное качество связи :( ).
Спасибо ещё раз всем. Будем пользоваться пока сторонней программой которая думает, что существует 600% :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.05.2006 (Ср) 17:23

Я могу парсер написать... но за одним условием (небольшим)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Сообщение Greis » 24.05.2006 (Ср) 21:25

Хакер писал(а):Я могу парсер написать... но за одним условием (небольшим)

Снова меня неправильно поняли :( . Меня неинтересует готовый продукт :D Мне интересно сделать самой(неосилю - значит не судьба), но желателен пример..хотя б по приведённой мной строке. Да знаний мало..в книгах(покрайней мере те что у меня) я нашла только всё в общих чертах и как это всё применить в данном примере мне в голову не приходит.
Строку сокращаю :)
Код: Выделить всё
={{{{[item1];21;30;100}};x};{{{[item2];1;3;100}};y};{{{[item3];1;1;75};{[item4];1;1;25}};z}}Tab

Найти х, y, z - числа..каждое умножить на заданное число.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.05.2006 (Ср) 22:11

Мне интересно сделать самой(неосилю - значит не судьба), но желателен пример..
Хакер праильно заметил - без рекурсии будет сложновато. Вот тутнеплохо объясняется, что это и с чем ее едят...
Гм... пример говоришь? По рекурсивному разбору строк могу кое что выложить- это транслятор языка BrainF*ck. Правда код на ассемблере...
А я все практикую лечение травами...

--=GAMER=--
Фиолетовый бот
Фиолетовый бот
Аватара пользователя
 
Сообщения: 810
Зарегистрирован: 22.03.2004 (Пн) 11:29
Откуда: Владивосток

Сообщение --=GAMER=-- » 25.05.2006 (Чт) 3:20

Да и как вы себе представляете читерство на удалённом сервере с помощью данного действа?


Оч. Просто, т.к. сервер юзает скрипты, то дырка с дюпом образуеться сама собой :wink:
В темноте слепец — самый надежный проводник. В эпоху безумия пусть тебя ведет сумасшедший.

rRenderer Engine
VB Wiki

Greis
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 30.03.2006 (Чт) 22:53

Сообщение Greis » 25.05.2006 (Чт) 9:16

--=GAMER=--
Если цитируешь вопрос - думаю нужно дать ответ! Ответа не заметила. Сервер грузит скрипты только при загрузке(больше они ему не нужны..можно даже удалить). Да и если б я являлась игроком и у меня был доступ к серверу то скрипты это самое последнее на что я обратила бы внимание! Есть база из которой он грузит всё во время работы вот там раздолье для игроков.
Twister За ссылку спасибо. Я ж написала пример по строке :( и конечно же на VB. У меня есть на PHP который делает даже немного больше. Может найдутся специалисты в переводе.
Код: Выделить всё
<?
function dropskaidymas($drop){
   $drop=explode("{{{",$drop);
   $grup=count($drop)-1;          
   $m=0;
   for ($j=1;$j<=$grup;$j++){
      $mass = explode (";",$drop[$j]);
      $r = (count($mass));    
      if ($j==$grup) { $r=($r-1)/4;}
      else {$r=($r-2)/4;}
      $simbols= array("{","}","\\");
      for ($i=0;$i<$r;$i++){
         $info[$m][0]=str_replace ($simbols,"",$mass[$i*4]);
         $info[$m][1]=str_replace ($simbols,"",$mass[$i*4+1]);
         $info[$m][2]=str_replace ($simbols,"",$mass[$i*4+2]);
         $info[$m][3]=str_replace ($simbols,"",$mass[$i*4+3]);
         if ($info[$m][0]!=""){
            $info[$m][4]=$mass[$i*4+3]*$mass[$r*4]/100;
            $info[$m][5]=1/$info[$m][4]*100;}
         else{$info[$m][4]="";
            $info[$m][5]="";}
         $m=$m+1;
         }
   }
   return $info;
} ?>

Если нет то видимо придётся принять предложение Хакера, но только с условием :D (небольшим) - VB , исходник. Если да то - ПМ.
P.S. Прошу прощения модераторов. Создавая тему не думала, что всё так сложно и из неё получиться чат.

miwutka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 76
Зарегистрирован: 10.11.2005 (Чт) 16:34
Откуда: Moscow, Elektrostal

Сообщение miwutka » 25.05.2006 (Чт) 10:36

я не могу понять, в чем сложности? вроде уже расказали до мелочей весь алгоритм, функции instr и mid не представляют сложности.

php выполнякет тот аалгоритм который мы говорили.

--=GAMER=--
Фиолетовый бот
Фиолетовый бот
Аватара пользователя
 
Сообщения: 810
Зарегистрирован: 22.03.2004 (Пн) 11:29
Откуда: Владивосток

Сообщение --=GAMER=-- » 26.05.2006 (Пт) 1:41

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

з.ы. Почему я сначало решил, что ты не админ, а просто хочешь хакнуть серв? Просто первых намного меньше чем вторых, извиняюсь..... :wink: :oops:
В темноте слепец — самый надежный проводник. В эпоху безумия пусть тебя ведет сумасшедший.

rRenderer Engine
VB Wiki


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 131

    TopList  
cron