|
И снова здрасте.))
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=60&fpage=2&tid=2154726]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 409ms |
0 / 0 |