|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Короче... решил поюзать VB6, потому что он читает .bas и т.п. Нашел в сети какую-то portable сборку. Решил посмотреть как себя поведет эта штука при переносе в нее vbscript. В общем не знаю че не так, но такой вот код не пашет: Код: vbnet 1. 2. 3. 4. 5.
Суть в том, что преобразование типа не работает. Говорит, что тип данных String. Это говносборка такая или я что-то не так делаю??? *** "Лучший копилятор - это мозг…" © *** ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 22:29 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Значение в переменной i нам предлагается угадать? Но вообще - говнокод голимый, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 23:22 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77, Это не говносборка. Просто код - бред сумасшедшего. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 23:41 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Много повидал на этом форуме, но вот это Код: vbnet 1.
просто вишенка на торте ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2021, 23:43 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Нормальный код. i - естественно строка, которую мы превращаем в массив через Split. Че непонятного? Я же писал, что изначально был скрипт. А на счет MsgBox - он тупо должен показать тип переменной, которая должна была стать Long, а она остается String. Какого? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 00:27 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Akina, тоже мне спецы.. мля. лишь бы пакость сказать не по делу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 00:30 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 Eolt, Нормальный код. i - естественно строка, которую мы превращаем в массив через Split. Че непонятного? Я же писал, что изначально был скрипт. А на счет MsgBox - он тупо должен показать тип переменной, которая должна была стать Long, а она остается String. Какого? Если "нормальный" код почему ошибка? Повторюсь твой код - бред сумасшедшего. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 01:26 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 Akina, тоже мне спецы.. мля. лишь бы пакость сказать не по делу. Тебя пытаются заставить думать. А не просто тупо копировать код, работу которого ты не понимаешь. Из-за этого у тебя возникают ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 01:29 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Ну опять... типа я не понимаю как работает собственный скрипт, который прекрасно работал/работает сам по себе. Я лишь пытаюсь перенести его в VB. И там он не работает. В VB6 не работает x = CLng(x)? Надо как-то иначе преобразовывать тип? Или неправильно работает TypeName(x) и он показывает неверные данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 01:41 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 Суть в том, что преобразование типа не работает. Говорит, что тип данных String. Это говносборка такая или я что-то не так делаю??? У меня есть большие сомнения, что VB поддерживает массив из элементов разного типа: попробуйте создать новый массив нужного типа, а в него уже кидайте результат конвертации строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 01:59 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 Eolt, Ну опять... типа я не понимаю как работает собственный скрипт, который прекрасно работал/работает сам по себе. Я лишь пытаюсь перенести его в VB. И там он не работает. 1. Кто тебе сказал, что VBScript и VB6 полностью совместим между собой на уровне переноса кода? 2. Подумай какого типа в VB6 оказалась переменная i после твоего переноса из VBScript 3. Какого типа вернула массив функция Split 4. Почему в дальнейшем операции над этим типом приводят к ошибке. авторВ VB6 не работает x = CLng(x)? Надо как-то иначе преобразовывать тип? Или неправильно работает TypeName(x) и он показывает неверные данные? У плохих программистов всегда виноват компилятор или операционная система. Исправляйте кривые руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:05 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77, Все уже работает.. но код мне не нравится. Пришлось везде прописать CLng. Т.е. везде вообще, и при сравнениях и при записи в массив и т.д. Вместо Код: vbnet 1. 2. 3.
Т.е. когда ты проходишь весь массив, преобразуя по ходу тип данных. Т.е. вместо того, чтобы это преобразование выполнить один раз для всего массива пришлось везде добавлять дурацкий CLng. А там очень много таких мест. Почему так??? Может быть можно как-то преобразовать массив целиком не через цикл? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:06 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Split естественно выполняется над строкой, над чем же еще? Соответственно в массиве оказывается тип String - может я неправильно понимаю, но по-моему так. CLng об ошибке преобразования типа не сообщал, значит тип должен был быть преобразован. А вот TypeName говорит, что не преобразован. И собственно далее все работало неправильно. Вообще по сравнению со скриптом VB просто выбесил. Мало того, что ему везде подавай Dim вместо (перед) a = так еще и CLng весь код засрал.. фу. Я конечно пока точно не знаю все ли там работает как надо.. но сам код стал ужасный с этими дебильными костылями. Блин. Может есть скриптовые языки (только не ява) у которых есть формы и которые более удобные для переноса??? На что бы перейти. Я только из-за форм. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:24 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 user-77, Все уже работает.. но код мне не нравится. Пришлось везде прописать CLng. Т.е. везде вообще, и при сравнениях и при записи в массив и т.д. Вместо Код: vbnet 1. 2. 3.
Т.е. когда ты проходишь весь массив, преобразуя по ходу тип данных. Т.е. вместо того, чтобы это преобразование выполнить один раз для всего массива пришлось везде добавлять дурацкий CLng. А там очень много таких мест. Почему так??? Может быть можно как-то преобразовать массив целиком не через цикл? Трындец. Ты хоть понял в чем твоя ошибка? Зачем ты лепишь CLng в коде не понимая причины происходяещего? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:27 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 Eolt, Соответственно в массиве оказывается тип String - может я неправильно понимаю, но по-моему так. Разумеется нет. Не String. Странно что ты этого не понимаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:28 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Ты по делу скажи лучше.. Я вообще не программер. Показывает String, а не variant, если что. Откуда я знаю в чем там ошибка с типом данных??? Ну может есть у VB нюанс при передаче переменных из функции в функцию? Я без понятия. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:47 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Мне кажется user-77 так и не поймет в чем причина его ошибки. Попробую объяснить чтобы было понятно непрограммисту. VBScript - язык бестиповый (точнее с одним типом Variant), с автоматическим приведением типа во всех функциях. VB6 - язык с типами (Variant тоже есть) с автоматическим и явным приведением типов в зависимости от ситуации. Делая объявление переменной Dim i в VBScript ты просто объявляешь переменную. В VB6 объявление Dim i равнозначно Dim i as Variant т.е. ты получаешь не String а Variant ! Из за этого будет куча проблем в последствии, когда множество функций будут валится с ошибкой несоответствия типа. Функция хочет String, а ты пихаешь в нее Variant, из за этого ошибка. Которую ты перекрываешь операцией явного приведения типа Clng например, или Cstr и т.д. Чтобы побороть эту ошибку не используй тип Variant. Это слишком коварный тип для новичков, который таит в себе кучу граблей в операциях автоматического приведения типа. Объявляй нужный тебе тип явно, например String или Long и будет тебе счастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 02:58 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Я вроде это как бы знаю.. но возможно не совсем.)) Я действительно объявлял как вариант. Только делал это специально, потому что.. Dim a, b, c, d написать проще чем a As ... b As.. и т.д. А переменных там до хрена. i - изначально был пользовательский ввод через InputBox. Поэтому там строка, а не вариант. Т.е. было так: Dim i: i = InputBox -> и поехали... Затем Split -> получаем массив. Но поскольку этот ввод это цифры, то далее мне требуется привести это к числу. И это приведение я делал через цикл, но оно почему-то не работает. Поэтому пришлось юзать CLng. Возможно мне столо привести другие переменные к конкретике, но это долго, потому что они по ходу дела меняются неоднократно. У меня не хватает фантазии их придумывать, а тупое d1, d2, d3... и т.д. меня не устраивает. Еще эти переменные катаются между разными функциями, где эта зараза тоже просила Dim. Т.е. там тоже пришлось бы объявлять их с As.. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 03:12 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Во всех советах по VB6 советуют не использовать Variant, это очень плохой тип для разработки программ Избегайте использования переменных типа Variant ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 03:27 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Ладно. Проверим. Заменю потом для одного из массивов начальный тип и посмотрим как сработает потом преобразование в цикле. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 04:07 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77, избранная вами манера общения по сути не позволяет давать вам вменяемые советы. user-77 ... типа я не понимаю как работает собственный скрипт, который прекрасно работал/работает сам по себе. Я лишь пытаюсь перенести его в VB. И там он не работает. ... Если бы вы понимали, у вас и вопроса вашего не возникло. Чтобы понять, что происходит, достаточно увидеть результат выполнения вот такого кода: Код: vbnet 1. 2.
В VB/VBA код Код: vbnet 1. 2. 3. 4. 5.
такого вида бессмысленный . Он в принципе не может достигнуть нужной вам цели. Массив с типом элемента строка в принципе никогда не превращается в массив с элементом длинное целое. Ни за какое количество Clng. И вы не можете там (в VB/VBA) результат выполнения split присвоить массиву с типом элемента Variant. Вот и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 16:23 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Вчитался в вопрос и всё фычеркнул наф. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2021, 18:31 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
booby, Ну во-первых тот же код в скриптах работает и все превращает. А во вторых, я и возмущался по этому поводу... потому что на мой вкус это реально бред. А если по вашему это не бред - ответьте ПОЧЕМУ, НЕ КОНВЕРТИТ? В чем проблема то? Мог бы и отконвертить, если бы этот VB нормальные люди писали. А работает только вот так (через костыли): Код: vbnet 1. 2. 3. 4. 5.
Проблема была только в том, что мне не хотелось прибегать к дополнительным переменным. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 23:52 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
booby, boobyuser-77, избранная вами манера общения по сути не позволяет давать вам вменяемые советы. Дайте совет пожалуйста! Можно ли в VB6 как-то обойти ограничение на ввод в 1024 знака? Или это зашито намертво и никакой библиотекой вопрос с multiline textbox на много букофф не решается? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2021, 23:57 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
booby, Блин.. заработался, пардон перепутал копипасты. Это про другое было. А на счет манеры общения. Что не так с моей манерой? Разве тот вариант, что я в предыдущем посте написал мне не могли подсказать? Конечно могли! Но не захотели... Вместо этого пошел флуд на тему "какой он дебил, какой говнокод" и т.п. Так что я полагаю, проблема не во мне, друзья. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 00:21 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
1024- это ограничение для inputbox. Для текстбокса не помню, вроде 64к было. У меня уже много лет нет установленного vb, проверить негде. Для richtextbox не помню ограничений, но должно быть больше, чем 64к по поводу костылей это не костыли, это вопрос понимания того ,что вы делаете.. Достичь ожидаемой вами цели код которой работал в vbs, в данном конкретном случае не может. Это еще одна, в данном случае - отрицательная особенность языка со встроенными преобразованиями. В данном случае, вместо того, чтобы делать нечто для вас бессмысленное, как раз разумнее выглядела бы ошибка времени выполнения. У медали всегда две стороны. PS Старайтесь далее не использовать персональную форму обращения при формулировке своих вопросов. Во первых, вы отнимаете таким образом возможность ответить тем, кто на самом деле использует inputbox, или хотя бы помнит, что это такое. А, во вторых, попробуйте принять в расчёт, что вы не можете рассчитывать на мой персональный ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 00:50 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 booby, А работает только вот так (через костыли): Код: vbnet 1. 2. 3. 4. 5.
Хосподи опять бредовый говнокод с тупейшей ошибкой внутри... авторПроблема была только в том, что мне не хотелось прибегать к дополнительным переменным. Проблема действительно только в том, что у вас нулевой уровень подготовки как программиста. Вы откуда-то копируете куски говнокода совершенно не понимая как он действительно работает. Не понимаете элементарных вещей вроде типов в языке и механизмов их преобразования. Лучше не заниматься глупостями, а все таки начать учиться, причем с самого начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 02:29 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, Ну ты у нас самый умный и продвинутый.. покажи класс. Давай, как надо было??? А заодно и объясни о какой ошибке идет речь? Потому что этот код работает и прекрасно преобразует тип данных из строки в Long... Кроме того, я с самого начала говорил, что не программист ни разу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 00:19 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
booby, Я как раз об этом и говорил, что есть элементарное правило хорошего тона в IT, и в программировании в частности: Любая команда должна точно и корректно выполнять возложенную на нее функцию ИЛИ оповещать пользователя о невозможности ее выполнения в силу тех или иных причин. Здесь же нет ни того, ни другого. Что CLng кривой, что Round. Впрочем, я не говорю, что VB плохой. Уверен, что в других средах программирования бреда тоже хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 00:32 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 есть элементарное правило хорошего тона Соответственно, прошу впредь его придерживаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 00:52 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Shocker.Pro, Пардон. Не пришло в голову. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 02:45 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77 Eolt, Ну ты у нас самый умный и продвинутый.. покажи класс. Давай, как надо было??? Я не умный, просто в отличие от вас я умею программировать. Для начала посмотреть в справочнике описание функции Split, какого типа входные параметры ей требуются. Затем надо продекларировать переменную i. Код: vbnet 1.
После чего компилятор вам сообщит, что весь последующий код бред. авторА заодно и объясни о какой ошибке идет речь? Потому что этот код работает и прекрасно преобразует тип данных из строки в Long... Поскольку здесь используете тип Variant, этот говнокод будет валится с ошибкой в зависимости от присвоенного i типа. Из-за этой ошибки вы создали первый пост Вроде уже обсудили, что нельзя использовать Variant, и вы снова на те же грабли. авторКроме того, я с самого начала говорил, что не программист ни разу. К сожалению, в современных условиях, у непрограммиста не получится написать сложный, работающий код. Это все равно что пытаться сделать двойной аксель и тройной тулуп в фигурном катании, элементарно не умея стоять на коньках. В итоге, вы все делаете неправильно, а потом прибегаете на форум и пишете, что вам подсунули плохой компилятор или плохую операционную систему. Если желания учиться нет, то лучше вообще не писать код. Ничего путного из этого не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 13:26 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
Eolt, В общем, как я и думал... как обычно бла-бла-бла и ноль конкретных примеров. EoltПоскольку здесь используете тип Variant, этот говнокод будет валится с ошибкой в зависимости от присвоенного i типа. Из-за этой ошибки вы создали первый пост Вроде уже обсудили, что нельзя использовать Variant, и вы снова на те же грабли. 1. Так.. по порядку. Если я напишу Dim i As String, то разумеется он будет валиться с ошибкой. Так как там Variant, то ничего с ошибкой не валится. 2. Если Вы уж называете этот код говнокодом предложите правильный вариант полностью. 3. Предлагается что? Плодить лишние переменные, лишние массивы и занимать (пусть временно), но лишнюю память? Это предлагается? И это будет не говнокод, а очень правильно и разумно? По-моему вопрос стоит так - что лучше: много переменных или использовать Variant. Я выбираю второе. И на этом основании Вы утверждаете, что код говно. А еще пишете что-то невнятное про "этот говнокод будет валится с ошибкой" и про посмотреть что нужно функции Split. Ежу понятно, что нужно Split и что у нее на выходе. И свой первый пост я так же создал не потому что у меня Variant и не потому что он валился с ошибкой, а ровно наоборот: ПОТОМУ ЧТО он не валился с ошибкой, но и преобразование не работало. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 20:25 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
user-77, Ваше мнение о том, что "Clng не работает" в лучшем случае указывает на то, что вы "ни разу не программист". Дело ваше, но думаю, что обучать вас с нуля, в предлагаемой вами манере изложения - вряд ли много охотников найдется. Всё-таки для вас было бы и умнее и осторожнее показывать реальные куски своего кода, а не "приблизительно похожие" примеры, составленные на откоснись. Мне кажется, так у вас могло бы быть гораздо больше шансов получать более полезные с практической точки зрения ответы, применительно к вашей конкретной задаче, которую вы ни разу не озвучили. (Ваш последний даже скомпилирован быть не может, и комментировать его, зная что вы его специально на лету составили, никакого желания не возникает) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 13:05 |
|
И снова здрасте.))
|
|||
---|---|---|---|
#18+
booby, Зачем кому-то мои куски кода? Я никого не прошу писать код за меня. Зачем его компилировать? Я не прошу меня обучать с нуля. Я просто хотел увидеть конкретный пример как в VB6 преобразовать массив из строкового в числовой, вот и все. Как это решается в VB6. Я многого хотел? На самом деле, странный какой-то форум. На других как то люди отвечают друг-другу, а тут приходишь и тебя начинают воспитывать, поливать грязью, а в конце говорят, что ты сам виноват, потому что у тебя манеры какие-то не такие. Очень странно. Вопрос был вполне конкретный, хотя кое-кто был прав, когда сказал, что мне следовало тему конкретизировать. Кстати и в интернете эти вопросы всплывают с завидной регулярностью, а ответов с гулькин хрен, кроме одного, что в VB6 это вроде как невозможно сделать одной командой, только через цикл, заполняя массив, да и в этом случае возможны заморочки. CLng работает только в конкретных случаях, например при сравнениях, во многих других нет. По-крайней мере, у меня так. Не знаю, может быть это потому, что я давно занимаюсь скриптами, но ничего против Variant не имею. Это же в конце концов просто удобно. Да, нужно следить за тем что у тебя в каждый конкретный момент, за переполнением и т.п., но это на мой взгляд мелочи, с которыми справится любой новичок. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 19:23 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2154726]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 177ms |
0 / 0 |