Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
1

Ошибка при определении имени пользователя

26.04.2011, 05:47. Показов 1543. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здрям!

VB6. Пишу код по определению имени текущего юзера. Нашел кучу примеров. Все начинаются одинаково:

Visual Basic
1
Declare Function GetUserNameAPI Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
При компиляции появляется ошибка:
"ошибка компиляции. Только комментарии могут появляться после End Sub, End Function, End Property"

Собственно вопросы:
что не так?
как правильно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2011, 05:47
Ответы с готовыми решениями:

Ошибка при определении max и min элемента в каждой строке матрицы
Здравствуйте:), подскажите пожалуйста на ошибку, дана задача: Дана матрица NxM. Определить...

Ошибка отображения имени пользователя при авторизации на сайте
Здравствуйте, у меня проблема. Я авторизуюсь на своём сайте и пишет привет, ИМЯ. Когда перехожу...

Переход на шаблон при регистрации, и добавление имени пользователя после имени домена
доброго дня вам у меня такая задача мне нужно чтобы при регистрации в форме на моем сайте...

Разница в работе bat-файла при его запуске от имени простого пользователя и от имени администратора
Здравствуйте. Пытаюсь создать .bat который: создаёт папку %ProgramFiles%\MyProg и копирует туда...

13
Частенько бываю
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
26.04.2011, 06:47 2
Складывается впечатление, что не втом месте описали функцию:
Visual Basic
1
2
3
4
5
6
7
8
9
10
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
 
Sub Test()
Dim sUserName As String, lLen As Long
sUserName = Space(255)
lLen = 255
GetUserName sUserName, lLen
MsgBox Trim(sUserName)
End Sub
1
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
26.04.2011, 07:09  [ТС] 3
Вот не поверишь, та же самая ошибка.
P.S. Мне этот код надо повесить на текстовое поле или на Label.
0
21 / 21 / 2
Регистрация: 18.10.2010
Сообщений: 117
26.04.2011, 07:20 4
Kir@, ларчик просто открывается...

этот код:

Visual Basic
1
2
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
...нужно вставить не в коде формы, а в модуле. Главное только не забудь приписать Public Declare Function... Потом вызывай эту функцию откуда угодно, как пишет Vlanib, например:

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Load()
  Dim sUserName As String, lLen As Long
  lLen = 255
  sUserName = Space(lLen)
  GetUserName sUserName, lLen
 
  Text1.Text = sUserName  'имя пользователя в TextBox1
End Sub
Все внешние API-функции пишутся в модуле, а не в кодах форм.
1
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
26.04.2011, 07:38  [ТС] 5
клёво, точно не туда написал. Спасибо. А как теперь юзернейм в текстовое поле вставить?
0
21 / 21 / 2
Регистрация: 18.10.2010
Сообщений: 117
26.04.2011, 07:44 6
ну вот же:

ставишь TextBox на форму, называешь его Text1...

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Load()
  Dim sUserName As String, lLen As Long
  lLen = 255
  sUserName = Space(lLen)
  GetUserName sUserName, lLen
 
  Text1.Text = sUserName  'имя пользователя в TextBox1
End Sub
ну или по нажатию кнопки:

ставишь TextBox и CommandButton на форму, называешь их Text1 и Command1 соответственно...

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Command1_Click()
  Dim sUserName As String, lLen As Long
  lLen = 255
  sUserName = Space(lLen)
  GetUserName sUserName, lLen
 
  Text1.Text = sUserName  'имя пользователя в TextBox1
End Sub
1
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
26.04.2011, 08:04  [ТС] 7
Можно я еще понаглею?
Есть список отделов и список телефонов. Как при выборе отдела n в ComboBox получить в текстовом файле номер его телефона? (собтсвенно, как туда его вписать я знаю, вопрос в установлении связей "отдел - телефон").
0
21 / 21 / 2
Регистрация: 18.10.2010
Сообщений: 117
26.04.2011, 08:58 8
Не проблема, только надо уточнить... Отделы и их номера телефонов хранятся в одном текстовом файле? Как выглядит такой файл? Или нужно вывести номера телефонов в такой файл? Уточни задачу...

Простейший пример вот:

ставишь на форму Combo1 и Label1. В Label1 будет отображаться номер телефона отдела выбранного в Combo1. Пишешь код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Type tOffice
  Number As Integer
  Telephone As String
End Type
 
'общее количество отделов
Const OfficeCount As Integer = 100
 
Dim Office(1 To OfficeCount) As tOffice
 
Private Sub Combo1_Change()
  'отобразить номер телефона в Label1 при смене отдела в Combo1
  Label1.Caption = Office(Combo1.Index).Telephone
End Sub
 
Private Sub Form_Load()
  'добавить в Combo1 все отделы
  For n = 1 To OfficeCount
    Combo1.AddItem Office(n).Number
  Next
End Sub
...естественно, что предварительно в массив Office, который мы определили, нужно ввести номера отделов и их телефоны. Ввести можно из текстового файла.
0
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
26.04.2011, 08:59  [ТС] 9
Пишу программу по созданию подписей.
Имя получил (спасибо). В запускаемом приложении юзер выбирает свой отдел.
В текстовый файл (который используется аутлуком как подпись) записывается:

BR,
%username%
Руководитель %отдел%
телефон %хх-хх%

Вот мне надо, чтобы %хх-хх% подставлялись в зависимоти от названия отдела.
0
21 / 21 / 2
Регистрация: 18.10.2010
Сообщений: 117
26.04.2011, 09:04 10
отделы и телефоны откуда у тебя берутся?

ну вот:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Type tOffice
  Number As String
  Telephone As String
End Type
 
'общее количество отделов
Const OfficeCount As Integer = 10
 
Dim Office(1 To OfficeCount) As tOffice
 
Private Sub Combo1_Change()
  'отобразить номер телефона в Label1 при смене названия отдела в Combo1
  Label1.Caption = Office(Combo1.Index + 1).Telephone
End Sub
 
Private Sub Form_Load()
 
  'тут проставляешь названия и телефоны каждого отдела
 
  Office(1).Number = "название отдела"
  Office(1).Telephone = "номер телефона"
 
  Office(2).Number = "название отдела"
  Office(2).Telephone = "номер телефона"
 
  Office(3).Number = "название отдела"
  Office(3).Telephone = "номер телефона"
 
  ' -----------------------------------
 
  Office(10).Number = "название отдела"
  Office(10).Telephone = "номер телефона"
 
  Combo1.Sorted = False
 
  'потом добавить все названия отделов в Combo1
  For n = 1 To OfficeCount
    Combo1.AddItem Office(n).Number
  Next
End Sub
1
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
26.04.2011, 09:17  [ТС] 11
Самый лучший вариант - вставить в саму программу, чтобы файлы не болтались.
0
21 / 21 / 2
Регистрация: 18.10.2010
Сообщений: 117
26.04.2011, 09:41 12
ну тогда предыдущее моё сообщение с текстом программы подойдет. Думаю, разберешься там. Если что, спрашивай...
0
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
26.04.2011, 10:41  [ТС] 13
Axevine,
Visual Basic
1
 Label1.Caption = Office(Combo1.Index + 1).Telephone
не выводит ничего в label.

Если поставить
Visual Basic
1
 Label1.Caption = Сombo1.Text
то, значение из списка показывает. Т.е. с именами все в порядке, а вот номера он не таскает.
0
21 / 21 / 2
Регистрация: 18.10.2010
Сообщений: 117
26.04.2011, 10:57 14
блин, ошибся... привык к VB.NET. вот:

замени эту процедуру:

Visual Basic
1
2
3
4
Private Sub Combo1_Change()
  'отобразить номер телефона в Label1 при смене названия отдела в Combo1
  Label1.Caption = Office(Combo1.Index + 1).Telephone
End Sub

вместо неё, напиши вот это (только что проверил):

Visual Basic
1
2
3
Private Sub Combo1_Click()
  Label1.Caption = Office(Combo1.ListIndex + 1).Telephone
End Sub
0
26.04.2011, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2011, 10:57
Помогаю со студенческими работами здесь

Ошибка при определении массива
#pragma hdrstop #pragma argsused #ifdef _WIN32 #include <tchar.h> #else typedef char _TCHAR;...

Ошибка при определении instanceof
Добрый день. Есть следующий код: public Bag(int size, final Class cluzz){ if(cluzz...

Ошибка при определении макроса
Здорова! Есть код: #include <iostream> using std::cout; using std::endl; #include <string>...

Вывод имени пользователя или имени компьютера пользователя БД
Здравствуйте. Есть БД на аксесс 2013+SQL Server. Файл БД хранится на сетевом ресурсе, пользователи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru