Многие люди кодят на VB, почему не поговорить и об этом языке? Все темы только о С++, а ведь на васике можно создавать неплохие проги.
|
Многие люди кодят на VB, почему не поговорить и об этом языке? Все темы только о С++, а ведь на васике можно создавать неплохие проги.
Посмотри интересный сайт Александра Аникина, посвященный сабжу:
http://www.hotmix.kiev.ua
З.Ы. :idea: Сам на VB не программирую, но дяде Биллу он нравится... :wink:
Улыбайся - завтра будет хуже!
www.vbstreets.ru
http://bbs.vbstreets.ru - вот тут я часто сидел пару лет назад..)
Язык программирование есть лишь средство выразить твои мысли в понятной компьютеру форме. И разница между VB и CPP сводится, по большому счёту, к особенности работы компилятора.
Ковчег построил любитель - профессионалы построили Титаник...
Всё что было до 7 версии васика - имхо не есть вери гут :) Он даже не был объектно-ориентированным... а только "объектным"...
Просто у VB и С++ разные цели :)
~ Motivation is what gets you started. Habit is what keeps you going.
http://www.hotmix.kiev.ua/ не работает. http://www.vbstreets.ru очень хороший сайт где можно найти подтверждение тому что на VB можно писать дейтвительно класные вещи. ИМХО нельзя зацикливаться на чём-то одном, будь то язык программирования или блюдо из книги о вкусной и здоровой пище. :lol:
Исходники Black&White ScreenSaver (ехешник всего 17,5 kB):Сообщение от ahill
:arrow:
'************************************
'Copyright © 2001 by Alexander Anikin
'e-mail: [email protected]
'for more my code samples:
'http://www.hotmix.kiev.ua
'************************************
Option Explicit
Private Declare Function ShowCursor _
Lib "user32" ( _
ByVal bShow As Long _
) As Long
Dim Result
Dim pict As Picture
Dim Red As Integer
Dim Green As Integer
Dim Blue As Integer
Dim a As Long
Dim j As Integer, p As Integer
Private Declare Function BitBlt _
Lib "gdi32" ( _
ByVal hDestDC As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal XSrc As Long, ByVal YSrc As Long, _
ByVal dwRop As Long _
) As Long
Private Declare Function GetDesktopWindow _
Lib "user32" () As Long
Private Declare Function GetDC _
Lib "user32" ( _
ByVal hwnd As Long _
) As Long
Private Declare Function ReleaseDC _
Lib "user32" ( _
ByVal hwnd As Long, _
ByVal hdc As Long _
) As Long
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOREDRAW = &H8
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_NOCOPYBITS = &H100
Private Const SWP_NOOWNERZORDER = &H200
Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Private Const HWND_TOP = 0
Private Const HWND_BOTTOM = 1
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Declare Function SetWindowPos _
Lib "user32" ( _
ByVal hwnd As Long, _
ByVal hwndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal CX As Long, _
ByVal CY As Long, _
ByVal wFlags As Long _
) As Long
Private mbOnTop As Boolean
Private Const NUMBER_COLORS = 16777215
Function ColorSplit(RGBMix As Long, R%, G%, B%)
R% = RGBMix And &HFF
G% = (RGBMix \ &H100) And &HFF
B% = (RGBMix \ &H10000) And &HFF
End Function
Private Property Let OnTop(Setting As Boolean)
If Setting Then
SetWindowPos hwnd, HWND_TOPMOST, _
0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Else
SetWindowPos hwnd, HWND_NOTOPMOST, _
0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End If
mbOnTop = Setting
'XXXXXXXXXXX OnTop = true Or false
End Property
Private Property Get OnTop() As Boolean
OnTop = mbOnTop
End Property
'XXXXXXXXXXX
Private Sub Form_Activate()
OnTop = True
BeginPlaySound 5
Call Invert
Call Grayscale
ex:
Call Invert
GoTo ex
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Unload Me
End Sub
Private Sub Form_Load()
If App.PrevInstance = True Then
Unload Me
Exit Sub
End If
Select Case UCase$(Left$(Command$, 2))
Case "/P"
Unload Me
Exit Sub
Case "/C"
Unload Me
Exit Sub
Case "/A"
Unload Me
Exit Sub
Case "/S"
Case ""
Case Else
Unload Me
Exit Sub
End Select
Result = ShowCursor(False)
Dim X As Long, Y As Long
Dim XSrc As Long, YSrc As Long
Dim dwRop As Long, hwndSrc As Long, hSrcDC As Long
Dim Res As Long
Dim PixelColor, PixelCount
Width = Screen.Width
Height = Screen.Height
Randomize
ScaleMode = vbPixels
Move 0, 0, Screen.Width + 1, Screen.Height + 1
dwRop = &HCC0020
hwndSrc = GetDesktopWindow()
hSrcDC = GetDC(hwndSrc)
Res = BitBlt(hdc, 0, 0, ScaleWidth, _
ScaleHeight, hSrcDC, 0, 0, dwRop)
Res = ReleaseDC(hwndSrc, hSrcDC)
Show
Set pict = Image
WindowState = vbMaximized
picDesktop.Width = Screen.Width \ Screen.TwipsPerPixelX
picDesktop.Height = Screen.Height \ Screen.TwipsPerPixelY
Set picDesktop.Picture = pict
picDesktop.Enabled = False
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Unload Me
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Static X0 As Integer, Y0 As Integer
'-----------------------------------------------------------------
If ((X0 = 0) And (Y0 = 0)) Or _
((Abs(X0 - X) < 3) And (Abs(Y0 - Y) < 3)) Then ' small mouse movement...
X0 = X ' Save current x coordinate
Y0 = Y ' Save current y coordinate
Exit Sub ' Exit
End If
Unload Me ' Large mouse movement (terminate screensaver)
End Sub
Private Sub Form_Unload(Cancel As Integer)
EndPlaySound
Result = ShowCursor(True)
End
End Sub
Private Sub Invert()
For j = 0 To picDesktop.ScaleWidth - 1
For p = 0 To picDesktop.ScaleHeight - 1
picDesktop.PSet (j, p), NUMBER_COLORS - picDesktop.Point(j, p)
Next p
DoEvents
Next j
End Sub
Private Sub Grayscale()
For j = 0 To picDesktop.ScaleWidth - 1
For p = 0 To picDesktop.ScaleHeight - 1
a = picDesktop.Point(j, p)
ColorSplit a, Red, Green, Blue
picDesktop.PSet (j, p), RGB((Red + Green + Blue) \ 3, (Red + Green + Blue) \ 3, (Red + Green + Blue) \ 3)
Next p
DoEvents
Next j
End Sub
:arrow:
Красиво :!:
Улыбайся - завтра будет хуже!
Да, можно писать хорошие вещи. Верю. Но всё равно мне кажется, что на вб сложно сделать некоторые вещи, которые проще на си. Так что в качестве единственного языка, который ты знаешь, не пойдёт (моё мнение!).
Так что и на вб зацикливаться не надо.
Да, Билл будет его развивать изо всех сил... Но мне кажется, что как альтернатива вб в некотором роде пойдёт Борланд си билдер (утверждение не для спора - не пинать, мне просто так кажется). Да и сэкономите время, выучив сразу сишный синтаксис...
Dixi, кажется...
[url=www.warsword.od.ua][code]IC | XC
---+---
NI | KA
[/code][/url]
Да я и не говорил что вб единственный язык который я знаю, просто питаю к нему симпатию со времён BASICa. А билдер действительно может быть альтернативой учитывая простоту создания интерфейса, хотя имхо билдер всё-таки оболочка для си, а чем больше уровень абстракции тем больше вероятность ошибок. Правда про вб можно сказать тоже самое
Вроде пинков нет - оглянеувшись, продолжу.
>>имхо билдер всё-таки оболочка для си, а чем больше уровень абстракции тем больше вероятность ошибок
Ну... Отчего же? Вовсе нет! По-моему, скорее как раз наоборот...
Сравните ассемблер и ...(на выбор любой язык высокого уровня)!
Пример: вам нужно получить ввод с клавы. (я сам асм не знаю, но так, осколки знаний есть)
Вы пишете
int 21
А забыли, что, хоть это и называется "двадцать первое прерывание", но это совсем не то, а надо -
int h21
А линковщик, вполне возможно, ошибки не выдаст(хотя сам абсолютно не в курсе) - ведь всё верно! есть такое прерывание!
Это - просто наглядное опровержение вашего утверждения (мне кажется, не совсем взвешенного - сам, бывало, ляпну...).
Мда... А что ж там такого, чтоб к нему(васику) симпатии питать? Впрочем, я что-то того... Просто я сызмальства так же само полюбил си...
[url=www.warsword.od.ua][code]IC | XC
---+---
NI | KA
[/code][/url]
krieger, щас тебе будут пинки. Так сказать, встретил старого знакомого Уж можешь не расслаблятся
Ну и? От опечаток не защитит ни один язык или компилятор/линковщик. Простой пример: перетереть область памяти можно на ура даже в бейсике - узнаешь об этом только во время выполнения программы, а не на стадии компиляции/трансляции. И что?Сравните ассемблер и ...(на выбор любой язык высокого уровня)!
Пример: вам нужно получить ввод с клавы. (я сам асм не знаю, но так, осколки знаний есть)
Вы пишете
int 21
А забыли, что, хоть это и называется "двадцать первое прерывание", но это совсем не то, а надо -
int h21
А линковщик, вполне возможно, ошибки не выдаст(хотя сам абсолютно не в курсе) - ведь всё верно! есть такое прерывание!
Что же касается темы: да какая разница то, какой инструмент? Вопрос всего лишь в умении обращатся с ним. О чем вообще тут спорить и говорить? Я видел и достойные программы написаные на васике и совершенно убогие поделки на "обожествляемом" всеми си++. Как всегда инструмент остается инструментом, а главной движущей силой остается идея.
Думаешь ли ты о жизни? Думаешь ли ты о смерти? Что ты будешь делать когда поймешь что никому не нужен?
Фу... Пинки слабоваты, я ожидал, что ты меня снова будешь в клочья рвать
А тут - почти консенсус... Во всём согласен...
[url=www.warsword.od.ua][code]IC | XC
---+---
NI | KA
[/code][/url]
Согласен на все сто, хотя часто сложность инструмента может порождать/провоцировать ошибки в приложении :wink:Сообщение от Slaventius
Улыбайся - завтра будет хуже!
Именно об этом я и хотел сказать. Я абсолютно согласен с тем что задачи у каждого языка разные(об этом писал ещё Страуструпп)но для приложений не слишком углубляюшимися в системные "подробности" больше подходит язык который позволяет быстро разрабатывать интерфейсы пользователя - VB,C++ Bilder, Delphi. Ведь приложение зачастую оценивается не по сложности языка программирования, а по скорости разработки.
Сколько знаю Вб, а знаю его долго, он рулит. Есть конечно некоторые существенные недостатки, но есть и плюсы. Недостатки в основном это проблема с переносом командного файла на машины где их нет, в отличии от Си, сложность с созданием графики(ДИрект, проблема состоит в выходе из консоля. Только через процедуру Терминал). Один из плюсов - быстрота создания сложных програм общего пользования(под Винду). :roll:
бейсик .net -- вообще другой язык, нежели вб6... А вб6 микрософт вроде-бы отказывается поддерживать :)
~ Motivation is what gets you started. Habit is what keeps you going.
Я вот недавно тоже решил нацарапать кое что на вб. В итоге:
1) Работа с файлами имеющими юникодовые названия- реализация через API
2) Вызов окон открыть/сохранить- реализация через API
3) Прогресс бар- реализация через API
4) TreeView -реализация через APi
5) Отрисовка графики- реализация через API
6) Копироание массивов, строк и проч ерунды- реализация через API
7) Работа с файлами-реализация через API
......
и т.д
Использование стандартных элементов приводило, либо к тормозам либо с их помощью вообще невозможно было реализовать то что надо. И вот наблюдая на все декларации и реализацию я судорожно понимаю, что на си реализация была бы не намного сложнее.
Социальные закладки