Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно запросить имя пользователя? [D5, Win2k, WinXP]


Страницы:   1 2

Eugem ©   (2006-11-12 01:30:00) 

Не получается запросить имя пользователя в программе.
Делаю так:
GetUserName(buf,lbuf);// получение имени пользователя

Имя пользователя записывается в buf. НО! Как только я пытаюсь обработать переменную buf или вывести её в текстовом виде в Edit-поле, то возникает ошибка при работе функции GetUserName.

Что не так. Подскажите, пожалуйста


Anatoly Podgoretsky   (2006-11-13 07:38:00) [1]

> MikePetrichenko  (13.11.2006 0:43:31)  [31]

А в массиве разве не надо явного задания длины, при том два раза


Ketmar   (2006-11-13 02:52:00) [2]

>[37] MikePetrichenko(c) 13-Nov-2006, 02:49
>И всетаки, IMHO, лучше подойти и вежливо спросить "Как Вас
>зовут?"
не забывая, что доброе слово и пистолет намного более действенны, нежели просто доброе слово.


MikePetrichenko   (2006-11-13 02:49:00) [3]


> Как правильно запросить имя пользователя?

И всетаки, IMHO, лучше подойти и вежливо спросить "Как Вас зовут?"


Ketmar   (2006-11-13 01:36:00) [4]

>[35] MikePetrichenko(c) 13-Nov-2006, 01:02
>та ну! Как ни странно, я тоже. Видимо это старость :(
а за углом поджидает злой маразм. эх, не бывать нам как ЮЗ, ИШ, АП...


MikePetrichenko   (2006-11-13 01:02:00) [5]


> а я всё по-привычке в массивы получаю. %-)

та ну! Как ни странно, я тоже. Видимо это старость :(


MikePetrichenko   (2006-11-13 01:00:00) [6]


> Это лучший вариант, string используется повеместно и работать
> с ним в отличии от массива удобно, вот и получать надо сразу
> в string.

Не спорю. Возможно не лучший (зависит от контекста программы), но уж 100% ясный и простой.


Ketmar   (2006-11-13 00:59:00) [7]

>[32] guav(c) 13-Nov-2006, 00:57
>надо сразу в string.
а я всё по-привычке в массивы получаю. %-)


guav   (2006-11-13 00:57:00) [8]

> [31] MikePetrichenko ©   (13.11.06 00:43)
> Но потребует явного задания длинны строки SetLength

"...а мне это не интересно! Просьба подсказать другие варианты." (с) Орешник

Это лучший вариант, string используется повеместно и работать с ним в отличии от массива удобно, вот и получать надо сразу в string.


MikePetrichenko   (2006-11-13 00:43:00) [9]


> Глупо вообще использовать массив, string полностью совместим
> с PChar

Тоже вариант. Но потребует явного задания длинны строки SetLength для передачи в GetUserName


guav   (2006-11-12 19:17:00) [10]

Всё уже сказано, можно только добавить, сколько требуется выделить:
A buffer size of (UNLEN + 1) characters will hold the maximum length user name including the terminating null character. UNLEN is defined in Lmcons.h.
Из Jwa:
 UNLEN      = 256; // Maximum user name length


Напонмило.
http://www.delphimaster.ru/cgi-bin/nuts.pl?showpage=2
ветка Имя компьютера


Anatoly Podgoretsky   (2006-11-12 19:06:00) [11]

> MikePetrichenko  (12.11.2006 17:46:27)  [27]

Глупо вообще использовать массив, string полностью совместим с PChar


Anatoly Podgoretsky   (2006-11-12 19:05:00) [12]

> MikePetrichenko  (12.11.2006 17:40:24)  [24]

Ничего оригинального, под PChar и выделит


MikePetrichenko   (2006-11-12 17:46:00) [13]

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


MikePetrichenko   (2006-11-12 17:43:00) [14]


> Для Pchar есть StrAlloc StrDispoce

Для PChar и всего отсального (кроме типизированных указателей на записи, для которых подойдет New) есть GetMem, FreeMem, HeapAlloc, MemAlloc и т.п.
Рекомендую использовать native API функции управления памятью, так как меньше гемороя будет в будущем.


Dmitrij_K   (2006-11-12 17:42:00) [15]

Для Pchar есть StrAlloc StrDispoce


MikePetrichenko   (2006-11-12 17:40:00) [16]


> new(buf);

new для PChar??? Оригинально. А размер кто указывать будет, сколько того new нужно выделить?


Eugem   (2006-11-12 17:28:00) [17]

Я вот так написал:
new(buf);
    GetUserName(buf,lbuf);// получение имени пользователя
    sbuf:=buf;


MikePetrichenko   (2006-11-12 17:07:00) [18]

var
 Buf: array [0..254] of Char;
 BufSize: DWORD;
begin
 BufSize := 255;
 FillChar(Buf, BufSize, 0);
 GetUserName(Buf, BufSize);
 ....
end;


Ketmar   (2006-11-12 15:58:00) [19]

>[20] Eugem(c) 12-Nov-2006, 15:56
>Напишите как память выделить
вот здесь помогут: http://antigreen.org/bioreactor/

зыж quousque tandem?!!


Eugem   (2006-11-12 15:56:00) [20]


> нет, видимо. оно не умеет читать, только писать. чукча-программист.

Из того что написали... Кто говорит, что всё правильно. Кто говорит, что нужно выделять память. Напишите как память выделить


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо