Форум программистов, компьютерный форум, киберфорум
Наши страницы
fever brain
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

Синнтаксис Vb6, позволяет писать программы одной строчкой

Запись от fever brain размещена 18.01.2016 в 11:27
Обновил(-а) fever brain 19.06.2016 в 15:12

К примеру операторы перехода, которых никто не любит
Goto, а есть еще On Goto 1,2,3 и тд

есть еще циклы Do While [Условие]:программа: Exit Do: Loop

это то же что и If [Условие]:программа end if

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub RePaint(Optional ByVal Frame As Object): Const ii = 9, ll = 45: Static i&, v, w, d As Object, j(ii) As Object: Do While j(ii) Is Nothing: Set j(ii) = Controls.Add("vb.label", "label_autosize"): j(ii).AutoSize = 1: Exit Do: Loop: Do While d Is Nothing: Set d = CreateObject("scripting.dictionary"): d.comparemode = 1: Exit Do: Loop: Do Until Frame Is Nothing: Set v = Frame: On Error GoTo g5: GoTo g1: Exit Do: Loop: For Each v In Controls
g1:     Do While TypeName(v) = "Frame": On d(v.hWnd) GoTo g2, g4: d(v.hWnd) = 1: Set j(0) = Controls.Add("vb.picturebox", "pic" & v.hWnd & 0, v): j(0).Visible = 1: j(0).BorderStyle = 0: For i = 1 To ii - 1: Do While i < 5: Set j(i) = Controls.Add("vb.picturebox", "pic" & v.hWnd & i, j(0)): j(i).Visible = 1: j(i).BorderStyle = 0: Exit Do: Loop: Do While i >= 5: Set j(i) = Controls.Add("vb.frame", "fra" & v.hWnd & i, j(i - 4)): j(i).Visible = 1: d(j(i).hWnd) = 2: Exit Do: Loop: Next: For Each w In Controls: Do While w.Container.hWnd = v.hWnd And w.Name <> j(0).Name: Set w.Container = j(0): Exit Do: Loop: Next: GoTo g3
g2:         For i = 0 To ii - 1: Do While i < 5: Set j(i) = Controls("pic" & v.hWnd & i): Exit Do: Loop: Do While i >= 5: Set j(i) = Controls("fra" & v.hWnd & i): Exit Do: Loop: Next
g3:         With v: Set j(ii).Font = .Font: j(ii).Caption = .Caption: For i = 0 To ii - 1: Select Case i
                        Case 0: j(i).Move 0, 0, .Width, .Height
                        Case 1: j(i).Move 0, 0, .Width, j(ii).Height
                        Case 2: j(i).Move 0, 0, ll, .Height
                        Case 3: j(i).Move .Width - ll, 0, ll, .Height
                        Case 4: j(i).Move 0, .Height - ll, .Width, ll
                        Case 5: j(i).Move 0, 0, .Width, .Height: Set j(i).Font = .Font: j(i).Caption = .Caption
                        Case 6: j(i).Move 0, 0, .Width, .Height
                        Case 7: j(i).Move -.Width + ll, 0, .Width, .Height
                        Case 8: j(i).Move 0, -.Height + ll, .Width, .Height
                    End Select: If i = 0 Or i > 4 Then j(i).BackColor = .BackColor
                Next: End With: Exit Do: Loop
g4: Next
g5: End Sub


ДОБАВИЛ АРХИВ, В БЛОГ (в коментариях нельзя было этого сделать)
Миниатюры
Нажмите на изображение для увеличения
Название: 123.jpg
Просмотров: 98
Размер:	45.9 Кб
ID:	3576   Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 1207
Размер:	32.4 Кб
ID:	3885  
Изображения
 
Вложения
Тип файла: rar 123.rar (9.2 Кб, 46 просмотров)
Размещено в Без категории
Просмотров 567 Комментарии 13
Всего комментариев 13
Комментарии
  1. Старый комментарий
    Аватар для fever brain
    Правда, делать это нужно только в том случае, если программа полностью отлаженна и протестированна, иначе
    разобраться во всех этих переходах будет очень сложно

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

    Исходник должен быть нормальным без этих бесконечных Do .. Loop On Goto
    Зато преемущество очевидно, именно мне будет известна логика программы
    Запись от fever brain размещена 18.01.2016 в 11:31 fever brain на форуме
    Обновил(-а) fever brain 18.01.2016 в 11:42
  2. Старый комментарий
    Аватар для tezaurismosis
    То, что вы написали, называется "спагетти-код". Читать очень трудно. Строки 1 и 2 это вообще насилие над мозгом.
    Не понимаю, в чём необходимость в "компактной записи"? Мы же не на бумаге пишем.
    Ваш код людям читать, заботьтесь о них!
    Запись от tezaurismosis размещена 22.01.2016 в 19:14 tezaurismosis вне форума
  3. Старый комментарий
    Аватар для fever brain
    Это не насилие над мозгами )), как вы говорите
    а результат наивысшего познания


    Программа, которую я выложил
    Находит фрейм, запоминает его затем добавляет в его контейнер еще 5 объектов
    а в каждый пикчюр еще по фрэйму, тоесть пере-рисовывает полностью
    Естественно это напугает начинающего программиста, поэтому я пишу "спагетти-код"
    но он этот код нужен
    Запись от fever brain размещена 22.01.2016 в 22:20 fever brain на форуме
    Обновил(-а) fever brain 23.01.2016 в 01:33
  4. Старый комментарий
    Аватар для агерон
    80% времени поддержки код читают, а не пишут, пожалейте коллег пишите адекватный код, и ознакомьтесь с понятием рефакторинг
    Запись от агерон размещена 23.01.2016 в 01:44 агерон на форуме
  5. Старый комментарий
    Аватар для fever brain
    Вот посмотрите эту программу 123.exe :
    вроде-бы функционал понятен, а чтобы она правилно работала
    приходиться дописывать разные дополнения

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

    Код хоть и получился компактным но разместить не получаеться ..
    Всего 5 строчек кода ..
    Запись от fever brain размещена 23.01.2016 в 09:34 fever brain на форуме
    Обновил(-а) fever brain 23.01.2016 в 09:51
  6. Старый комментарий
    Можно вопрос, а зачем это нужно? Когда ты компилируешь свой код, он преобразуется в те же команды, независимо от переносов строк, т.е. на размере бинарника это не отражается. Ну а размер исходника... Ну, время дисков 640 кб уже прошло довольно давно, так что можно позволить себе добавить несколько "лишних" символов перевода на новую строку.
    Короче, никакой практической пользы от этого нет, ну а так почти любой C-подобный язык позволяет писать такие колбаски, т.к. там есть точки с запятой.
    А вообще, ВБ 6, мягко говоря, мертв уже лет 10.
    Запись от klopik размещена 23.01.2016 в 14:03 klopik вне форума
  7. Старый комментарий
    Аватар для fever brain
    Цитата:
    а зачем это нужно?
    Ну так можно защитить свою программу от копирования
    программа после компиляции действительно короче получаеться
    а значит и работать будет быстрее.
    Нет пределов для совершенства, а VB6 не умер
    его каждый год хоронят ))

    Вот смотрите что пишут люди по поводу похорон ..
    http://www.cyberforum.ru/post6255100.html
    Запись от fever brain размещена 23.01.2016 в 14:54 fever brain на форуме
  8. Старый комментарий
    Аватар для tezaurismosis
    Цитата:
    Сообщение от fever brain
    вроде-бы функционал понятен, а чтобы она правилно работала
    приходиться дописывать разные дополнения
    Функционал - это совсем другое. Сейчас речь о коде, который этот функционал выполняет.
    Во-первых, если ваш код придётся читать ещё хотя бы одному программисту (не всегда же хеллоуворлды писать), он вас будет называть очень нехорошими словами, т.к. код совершенно нечитаем.
    Во-вторых, через пару месяцев вы сами в этом коде запутаетесь и исправить что-то будет сложно.
    В-третьих, если вы решите что-то дописать, то чтобы вписаться в общий принцип кода, придётся дальше писать такую кашу. Спагетти-код порождает спагетти-код.
    Цитата:
    Сообщение от fever brain
    Ну так можно защитить свою программу от копирования
    Так вы защищаете только исходник от копирования, который можно никому и не показывать. В самом приложении будут одни только ассемблерные инструкции. Обфускация актуальна для языков типа Java или C#, компилирующихся в промежуточный код, или для JavaScript, но не для VB.
    Запись от tezaurismosis размещена 23.01.2016 в 18:20 tezaurismosis вне форума
  9. Старый комментарий
    Аватар для Святой НякаЛайк
    Цитата:
    Сообщение от tezaurismosis Просмотреть комментарий
    Обфускация актуальна для языков типа Java или C#, компилирующихся в промежуточный код, или для JavaScript, но не для VB.
    Для VBA такой спагетти код служит достаточно неплохой обфускацией. Есть у меня один знакомый, он только в такой форме и пишет. Так его коды крайне трудно читать! Причём у него есть такому стилю своё, очень специфическое обоснование, которое не связано ни с размером после компиляции, ни с обфускацией...
    Запись от Святой НякаЛайк размещена 04.02.2019 в 09:51 Святой НякаЛайк вне форума
  10. Старый комментарий
    Аватар для Святой НякаЛайк
    Цитата:
    Сообщение от fever brain Просмотреть комментарий
    Вот посмотрите эту программу 123.exe :
    Я тоже хочу к своим малюткам на vb 6 красивые кнопки. Как и чем делаются такие *.exe.MANIFEST?
    Запись от Святой НякаЛайк размещена 04.02.2019 в 09:59 Святой НякаЛайк вне форума
  11. Старый комментарий
    fever brain,
    для развития мозгов такой код очень даже годится. Но есть программы, содержащие много сотен строк, которые не понять, если не написать еще такое же количество строк комментариев. А перед самим кодом надо понятно описать, что делает программу, зачем и почему, как ее модифицировать и пусть тот, кому не нравится этот код, напишет свой...
    Запись от нтч размещена 04.02.2019 в 17:24 нтч вне форума
  12. Старый комментарий
    Аватар для Avazart
    Цитата:
    Нет пределов для совершенства, а VB6 не умер
    его каждый год хоронят ))
    Динозавры не вымерли они живут на картинках учебников.
    Запись от Avazart размещена 09.02.2019 в 14:00 Avazart на форуме
  13. Старый комментарий
    VB6 - живее всех живых. Пока есть люди которые на нём пишут свои программы.
    Другой пример. Существуют ли Олимпийские боги? Вроде бы никто в них не верит?...
    Да!!! Я один из них! Не верите? - это ваше личное дело!

    забыл представиться... бог программирования на VB6.
    Запись от нтч размещена 09.02.2019 в 18:53 нтч вне форума
    Обновил(-а) нтч 09.02.2019 в 19:10
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru