Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Visual Basic (VB).

Автор: tarrac
Дата сообщения: 18.09.2006 07:34
VB & Сокеты

Решив написать клиента для сайта www.chart.chat.ru понял что столкнулся с кучей вопросов, один из которых - выбор на чем писать и что использовать. Просмотрев и попользовавшись готовыми клиентами, понял что хочеться чего нит о своего, а подумав, решил что лучше написать отдельную DLL со свойствами, методами и событиями, что бы на ее основе, сделать любого клиента, просто подключив и написав немног кода.
Однако, если писать самостоятельную библиотеку, то надо использовать апи. Побродив по инету, и посидев, написал все таки какое то подобие, которое годиться только лишь для отправки сообщений, потому как при попытке принимать, впадал в ступор.
Еще подумал и понял что нужны событийные сокеты и исрользование потоков, событий либо селектов.
то что на данный момент у меня есть можете глянуть вот тут - 75.52 KB
Писал на языке VB, потому как для меня проще.
Если есть жедающие помочь - любые предложения рассмотрю с удовольсвием
В идеале - сделать готовую библиотеку, на апи, с использованием Dll функций, которую можно будет подключать к любой платформе

Чтобы не засорять тему, поскольку возможна дискуссия, создал новую
http://forum.ru-board.com/topic.cgi?forum=33&topic=7343#1
Автор: tarrac
Дата сообщения: 20.09.2006 08:36
http://www.activevb.de/rubriken/apiviewer/index-apiviewereng.html#anchor3
вот тут кстати замечателдьная програмка лежит для API
Автор: FLIP87
Дата сообщения: 12.10.2006 13:20
Задача элементарная:
Запускаю программу, а она создает на рабочем столе папку с текущей датой

У меня не получается добавить значение даты к выбранному пути
код такой

Код: Dim dat As Date

Private Sub Form_Load()
Form1.Visible = False
dat = Date
If MsgBox("Создан каталог с именем" & dat, vbOKCnly) = vbOK Then
MkDir ("C:\Documents and Settings\admin\рабочий стол\" &dat)
Unload Form1
Else
Unload Form1
End If
End Sub
Автор: Troitsky
Дата сообщения: 12.10.2006 16:47
FLIP87

Цитата:
Как использовать переменные типа %windir% или %$DESKTOP%

см. функцию Environ ()


Цитата:
для реализации необх. мне функций понадобилось 3 строчки

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


Цитата:
Как сделать так чтобы если папка существует не возникало ошибки

Например, так
Код: Dim strPath As String

strPath = (Environ("USERPROFILE") & "\Рабочий стол\" & Str(Date))

If Dir(strPath, vbDirectory) = "" Then MkDir (strPath)
Автор: Troitsky
Дата сообщения: 15.10.2006 13:55
Вопрос такой:
Всем элементам управления, находящимся в компоненте Frame, нужно установить значение свойства Enabled, напрмер, в True. Для всех элементов формы можно применить такой код
Код: Dim AnyCtrl As Control

For Each AnyCtrl In frmMain.Controls
AnyCtrl.Enabled = True
Next
Автор: dneprcomp
Дата сообщения: 17.10.2006 00:27
Troitsky

Цитата:
Всем элементам управления, находящимся в компоненте Frame, нужно установить значение свойства Enabled, напрмер, в True
Не хочется спрашивать элементарное, но все же почему не изменять свойство Enabled только для фрейма?
Можно использовать функцию TypeName. Правда TypeOf делает меньше обращений, но зато TypeName вроде не имеет проблем с Container.
Можно поместить таймер на другой фрейм. Туда же будем помещать(если логика позволит) другие "неудобные" контролы.
Просто задействовать OnError.
Автор: Snegov1k
Дата сообщения: 17.10.2006 13:58
Всем привет, подскажите если не сложно.
Есть код (скопирован с http://www.nobat.ru/unzip.html) для The Bat! По нажатию горячей клавиши ВАТ! сохраняет вложение в нужную директорию, потом запускаем скрипт и передаем ему параметром название этой директории, скрипт проверяет на наличие архивов и запускает нужный архиватор.

Нужно дописать что бы скрипт перед запуском архиватора сверялся с файликом log.txt, из той же папки, где указанно количество частей. т.е. если 3=3 то идем дальше, если нет - то стоп.
Если прошли дальше и разархивировали - спросил ДА - НЕТ и если да - начал выполнять следующий скрипт (уже готовый).
Если возможно помогите плз, или скажите где и что( о чем) почитать.


Код:
Call GoScript()

'Пример запуска скрипта
'%winbootdir%\wscript.exe "E:\temp\bat\extr_att.vbs" -p"E:\temp\bat" -z"C:\nt-zip" -r"C:\WINRAR" -a"C:\ARJ"
'-------------------------
sub GoScript()
Dim obj, i
Dim Path, ZipPath, rarPath, arjPath, acePath, haPath
dim oArgs

' !!!лично у меня все архиваторы сложены в одну директорию Windows

Path=""
ZipPath=""
rarPath=""
arjPath=""
acePath=""
haPath=""

'test.vbs -p"E:\temp\bat" -z"d:\WINDOWS" -r"d:\WINDOWS" -a"d:\WINDOWS"
'закомментированы пути для АСЕ и НА -c"" -ha""

Set oArgs = Wscript.Arguments
if oArgs.Count>0 then
    for i=0 to oArgs.Count-1
        tmpstr = Replace(LCase(oArgs(i)), chr(34), "")
        if instr(1, tmpstr, "-p")>0 then Path=mid(tmpstr, 3, len(tmpstr))
        if instr(1, tmpstr, "-z")>0 then ZipPath=mid(tmpstr, 3, len(tmpstr))
        if instr(1, tmpstr, "-r")>0 then rarPath=mid(tmpstr, 3, len(tmpstr))
        if instr(1, tmpstr, "-a")>0 then arjPath=mid(tmpstr, 3, len(tmpstr))
        if instr(1, tmpstr, "-c")>0 then acePath=mid(tmpstr, 3, len(tmpstr))
        if instr(1, tmpstr, "-ha")>0 then haPath=mid(tmpstr, 4, len(tmpstr))
    next
end if


if Path = "" then Path = "E:\temp\bat" 'директория куда сохранили файлики

if ZipPath = "" then ZipPath = "d:\WINDOWS" ' chr(34) & ZipPath & "\pkzip25.exe" & chr(34) & " -ext -over=all " & chr(34) & Path & "\*.zip" & chr(34) & " " & chr(34) & Path & chr(34)

' рекомендую использовать Info-ZIP взять её можно здесь ftp://ftp.uu.net/pub/archiving/zip/WIN32/
' или любую другую утилиту, которая понимает длинные имена

if rarPath = "" then rarPath = "d:\WINDOWS" ' chr(34) & rarPath & "\RAR.EXE" & chr(34) & " x -o+ -y " & chr(34) & Path & "\*.rar" & chr(34) & " " & chr(34) & Path & chr(34)
if arjPath = "" then arjPath = "d:\WINDOWS" ' arjPath & "\ARJ.EXE x -y " & chr(34) & Path & "\*.arj" & chr(34) & " " & chr(34) & Path & chr(34)
'if acePath = "" then acePath = ""
'if haPath = "" then haPath = ""

'Wscript.Sleep(15000) ' спим 15 секунд, покуда бат савает файлики
' это необходимо чтобы избежать возможного конфликта доступа к файлам

if CheckExt(Path, "zip")=true then 'проверяем наличие zip файлов в директории Path
    RunCommand chr(34) & ZipPath & "\pkzip25.exe" & chr(34) & " -ext -over=all " & chr(34) & Path & "\*.zip" & chr(34) & " " & chr(34) & Path & chr(34) ' формируем командную строку
end if

if CheckExt(Path, "rar")=true then 'проверяем наличие rar файлов в директории Path
    RunCommand chr(34) & rarPath & "\RAR.EXE" & chr(34) & " x -o+ -y " & chr(34) & Path & "\*.rar" & chr(34) & " " & chr(34) & Path & chr(34) ' формируем командную строку
end if

if CheckExt(Path, "arj")=true then 'проверяем наличие arj файлов в директории Path
    RunCommand arjPath & "\ARJ.EXE x -y " & chr(34) & Path & "\*.arj" & chr(34) & " " & chr(34) & Path & chr(34)
end if

end sub
'----------------------------

sub RunCommand(stAppName)
    Set obj = WScript.CreateObject("WScript.Shell")
    obj.run stAppName, 1, true ' запущаем программку
    Set obj = nothing
'    MsgBox "Усё OK"
end sub

function CheckExt(DirName, Ext)
Dim fso, f, f1, fc, s
CheckExt = false
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(DirName)
Set fc = f.Files

Ext = LCase(Ext)
For Each f1 in fc
    s = LCase(fso.GetExtensionName(f1.name))
    if s=Ext then
        CheckExt = true
        Exit For
    end if
Next
end function
Автор: Troitsky
Дата сообщения: 17.10.2006 19:48
Snegov1k
Все вопросы по ВБ-скриптам в топике Программирование "удобняшек" на VBScript.

dneprcomp

Цитата:
почему не изменять свойство Enabled только для фрейма?

Это само собой, вот только в этом случае все вложенные во фрейм контролы продолжают выглядеть доступными, а нужно чтобы серенькими они стали

Цитата:
Можно использовать функцию TypeName. Правда TypeOf делает меньше обращений, но зато TypeName вроде не имеет проблем с Container.
TypeOf тоже с Container не конфликтует. А вот как с TypeName все замутить что то не пойму - она ведь для любого контрола, по идее должна выдавать только инфу, что он объект

Цитата:
Можно поместить таймер на другой фрейм. Туда же будем помещать(если логика позволит) другие "неудобные" контролы.

Это не выход - все равно перебирать все контролы на форме:
Код: For Each AnyCtrl In frmMain.Controls
Автор: dneprcomp
Дата сообщения: 17.10.2006 20:34
Snegov1k
Длинный код желательно прятать между тегами more] [/more


Troitsky

Цитата:
продолжают выглядеть доступными

Поменять фон фрейма?
Цитата:
TypeOf тоже с Container не конфликтует
Вызывает error при отсутствии свойства. А TypeName просто определяет тип контрола без обращения к свойствам.
Цитата:
А вот как с TypeName все замутить что то не пойму

Код:
Dim sCtlType As String

For Each ctl In frm.Controls
sCtlType = TypeName(ctl)
Select Case sCtlType
Case "Frame"
'при нескольких фреймах
If ctl.Name = "jdjfjfj" Then

Case "TabStrip"
For Each obj In ctl.Tabs

End Select
Автор: Troitsky
Дата сообщения: 17.10.2006 21:33
dneprcomp

Цитата:
Поменять фон фрейма?
не катит

Цитата:

Цитата: TypeOf тоже с Container не конфликтует
    
Вызывает error при отсутствии свойства.
Автор: dneprcomp
Дата сообщения: 17.10.2006 22:45
Troitsky
Только я бы не ставил Resume Next. Мало ли какие ошибки выскочат.
Лучше OnError GoTo [label]. А там уже обрабатывать. Вот внутри обработчика и Resume Next пойдет.
Автор: nyx
Дата сообщения: 18.10.2006 16:42
Срочно нужна прога для показа работы кода Хэмминга (или любого другого помехоустойчивого кода, например, с проверкой на четность) на Visual Basic. Алгоритм: ввести число - закодировать кодом Хэмминга - ввести в кодированное сообщение ошибку - провести проверку - найти ошибку. Прошу помощи в поиске такой программки или написания таковой.
Автор: FrodoHobbit
Дата сообщения: 25.10.2006 16:01
Привет

Вот есть БАТ файл, задаю ему параметр, например, 1, он создает папки, и копирует нужные мне файлы в зависимости от параметра.

Интересно, а можно написать программу, показывающую всего 1! окно, с кнопками.

1я - кнопка, нажатие - запуск БАТ ника с параметром 1,
2я - аналогично, с параметром 2.

А вот желательно ещё чтобы было поле, чтобы можно было поменять там путь к батнику, и меню, чтобы добавить новые кнопки, но это я уже как нибудь сам разберусь.

Главное - чтобы не ставить никаких визуал студий, и прочего, чтобы код можно было написать в блокноте, можно так?

Спасибо!

Добавлено:
Понял, что можно использовать VBS,

<FORM NAME=forma>

<INPUT TYPE="button" NAME="knopka"
VALUE="1">

<OnClick= (а вот тут надо запустить БАТник с параметром 1)>

</FORM>

<SCRIPT LANGUAGE="VBScript">
</SCRIPT>


А как запустить программу из VB-скрипта?
Автор: dneprcomp
Дата сообщения: 25.10.2006 21:43
FrodoHobbit
Вопросы по VBScript в
http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=120#lt
Автор: FrodoHobbit
Дата сообщения: 26.10.2006 14:31
ОК, спасибо
Автор: OrlangurStep
Дата сообщения: 12.11.2006 13:20
Как в вордовских макросах при закрытии документов заставить его не показывать диалог Файл не сохранен, блабла... , т.е. нужно чтобы принимался ответ Нет.
Просто тут приходится печатать однотипные доки и лень выполнять отдельные действия, все сводится к нажатию Alt + Z и ответу Нет. Хочется убрать и ответ.
Еще можно ли заставить выполнятся макросу при открытии любого дока?
Автор: Troitsky
Дата сообщения: 12.11.2006 13:42
OrlangurStep
Вопросы по WordVBA тут
И поясни там почему такой диалог вылетает. Может быть лучше вообще закрывать не внося изменений:
Код: ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
Автор: OrlangurStep
Дата сообщения: 12.11.2006 13:47
Troitsky

Цитата:
Может быть лучше вообще закрывать не внося изменений:

Да лучше, спасибки.
Автор: Acmos
Дата сообщения: 16.11.2006 09:50
Возможно ли средствами VB создать зашифрованную папку с паролем?
Автор: 0z0n
Дата сообщения: 20.11.2006 12:15
Вот вопрос какого характера. Поставил себе Visual Studio 2005 с VB но ничего внем не соображаю может кто то даст линки на начальную документацию. И основы. Как куда и чего а то ничего у меня не получаеться...
Автор: dneprcomp
Дата сообщения: 20.11.2006 23:36
0z0n
Поищи или спроси в
Компьютерные (IT) книги на АНГЛИЙСКОМ
Компьютерные (IT) книги на РУССКОМ языке.

Если канал хороший, то можно посмотреть
Learning Resources for Visual Basic Express
Обучающие видеокурсы по ИТ
Автор: zerkalo77
Дата сообщения: 26.11.2006 20:25
ТОВАРИШЧИ!!! Тут такое дело. Использую в своей проге excel.
Если быть точнее, то AxSpreadSheet.
Задолбался с одной проблемой - как эту барабаку распечатать.
Т.е. у меня есть инфа в axspreadsheet на форме и мне всё это дело надо вывести на печать.
Помогите.
Использую VisualBasic в VisualStudio 2005.
Спасибо...

Автор: zerkalo77
Дата сообщения: 28.11.2006 20:49
dneprcomp - на тебя одна надежда...
Хелп ми плиз. Очень очень надо.
Автор: dneprcomp
Дата сообщения: 28.11.2006 21:41
zerkalo77
Извини, но я с AxSpreadSheet не работал.
Если подскажешь где этот контрол взять, то попробую разобраться. Можешь еще выслать проект и эксел файл на профильное мыло.
Автор: BlackXSun
Дата сообщения: 06.12.2006 18:16
Можно ли НЕ СЛОЖНО создать форму, с поведением, как у ContextMenuStrip ???
Автор: dneprcomp
Дата сообщения: 06.12.2006 19:03
BlackXSun
Using Popup Menus in Visual Basic 6
VB6 Context Menu Demonstration.zip
Автор: BlackXSun
Дата сообщения: 06.12.2006 22:18
dneprcomp
Ну и че??? эти примеры показывают как работают всплывающие меню. Это нормально можно сделать и без выпендросов (Темболее в VB 2005, а то я второй пример, написанный в VB6 ели запустил, пока все нужные длл откопал и зарегил). А мне нужна форма, на которой можно разместить все что угодно, а не только иконки и надписи, но которая вела бы себя как всплывающее меню.
Автор: dneprcomp
Дата сообщения: 07.12.2006 00:05
BlackXSun

Цитата:
Ну и че???
Нельзя было сразу об'яснить толково что тебе надо, в какой среде? Как спросил, так и ответили.
Цитата:
А мне нужна форма, на которой можно разместить все что угодно... ...но которая вела бы себя как всплывающее меню
А чем такая форма отличается от любой другой? И, кстати, чего же не хватает в пресловутом ContextMenuStrip?
Автор: BlackXSun
Дата сообщения: 07.12.2006 12:59

Цитата:
А чем такая форма отличается от любой другой? И, кстати, чего же не хватает в пресловутом ContextMenuStrip?

Просто для меню уже прописанны тени от меню и т.д. Да ладно, не так уж это и страшно, уже ручками сделал. спасибо.
Автор: skek
Дата сообщения: 07.12.2006 16:10
Нужна помощь:
1. Иванов 8-20 КП
2. Сидоров 8-20 КП
1. Петров 7-23 КП
2. Чернов 7-23 КП
1. Васильев 9-7 ММ
2. Патронов 9-7 ММ

Как сделать так, чтобы:
1. Иванов 8-20 КП
2. Сидоров 8-20 КП
3. Петров 7-23 КП
4. Чернов 7-23 КП
1. Васильев 9-7 ММ
2. Патронов 9-7 ММ

Может быть и такое:
1. Иванов 8-20 КП
2. Сидоров 8-20 КП
1. Петров 7-23 КП
1. Васильев 9-7 ММ
2. Патронов 9-7 ММ

А надо:

1. Иванов 8-20 КП
2. Сидоров 8-20 КП
3. Петров 7-23 КП
4.
1. Васильев 9-7 ММ
2. Патронов 9-7 ММ

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

Предыдущая тема: для Hiper-six (индексы .nsx .smt) хоть что нибудь Опции


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.