Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизКак правильно запросить имя пользователя? Найти похожие ветки
← →
Eugem © (2006-11-12 01:30) [0]Не получается запросить имя пользователя в программе.
Делаю так:
GetUserName(buf,lbuf);// получение имени пользователя
Имя пользователя записывается в buf. НО! Как только я пытаюсь обработать переменную buf или вывести её в текстовом виде в Edit-поле, то возникает ошибка при работе функции GetUserName.
Что не так. Подскажите, пожалуйста
← →
Leonid Troyanovsky © (2006-11-12 02:13) [1]
> Eugem © (12.11.06 01:30)
> Что не так. Подскажите, пожалуйста
А память для buf будет Пушкин выделять.
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2006-11-12 12:35) [2]> Eugem (12.11.2006 1:30:00) [0]
Лучше вежливо.
У тебя ошибка в 17 строке.
← →
Eugem © (2006-11-12 12:51) [3]procedure TForm1.FormActivate(Sender: TObject);
var name,TT:string;buf:PChar;lbuf,i:cardinal;
begin
CoolTrayIcon1.IconVisible:=true;
assignfile(setf,SetFile);
reset(setf);
while not(Eof(setf)) do begin //чтение настроек программы из файла
readln(setf,name);
readln(setf,number) end;
closefile(setf);
GetUserName(buf,lbuf);// получение имени пользователя
sbuf:=buf;
if sbuf="0" then application.Terminate;
TT:=sbuf[1];
fname:=name;
gloA:=0;
numa:=StrToInt(number);
gloss:=0;
end;
Вот так написал. Переменную вроде описал, значит память под нее выделяется. Подскажите может по-другому выделять надо?
← →
Anatoly Podgoretsky © (2006-11-12 12:58) [4]> Eugem (12.11.2006 12:51:03) [3]
В данном коде явных ошибок не наблюдается, но у тебя еще есть код.
← →
Anatoly Podgoretsky © (2006-11-12 12:59) [5]> Eugem (12.11.2006 12:51:03) [3]
Ой, уродски отформатировано, еще как есть, это Пушкин виноват.
← →
Ketmar © (2006-11-12 13:05) [6]>[4] Anatoly Podgoretsky(c) 12-Nov-2006, 12:58
>В данном коде явных ошибок не наблюдается
"как это?" (ц)var name,TT:string;buf:PChar;lbuf,i:cardinal;
GetUserName(buf,lbuf);
LVT совершенно верно протелепатировал. а товарищу автору надо в "надмозги", там ему надмозг отполируют.
← →
Джо © (2006-11-12 13:08) [7]> Переменную вроде описал, значит память под нее выделяется.
Неверное умозаключение. За разьяснениями, действительно, к Пушкину.
← →
Anatoly Podgoretsky © (2006-11-12 13:09) [8]> Ketmar (12.11.2006 13:05:06) [6]
Так я уже поправился, я сначал прочитал это как часть параметров. Оформление то кода далеко от идеального.
← →
Джо © (2006-11-12 13:09) [9]> Eugem ©
Тип PChar — это указатель на область памяти. Кою необходимо выделить самостоятельно. Например, функциями работы с димнамической памятью.
← →
Anatoly Podgoretsky © (2006-11-12 13:10) [10]> Джо (12.11.2006 13:08:07) [7]
Правильное, память под Переменную выделена.
← →
Ketmar © (2006-11-12 13:11) [11]>[10] Anatoly Podgoretsky(c) 12-Nov-2006, 13:10
>Правильное, память под Переменную выделена.
смени личность, перекинь ветку, а? ведь щаз запинаем беднягу. %-)
← →
Джо © (2006-11-12 13:12) [12]> [10] Anatoly Podgoretsky © (12.11.06 13:10)
> > Джо (12.11.2006 13:08:07) [7]
>
> Правильное, память под Переменную выделена.
Ну, я уже поправился. :)
← →
Anatoly Podgoretsky © (2006-11-12 13:13) [13]> Ketmar (12.11.2006 13:11:11) [11]
Рано еще. Там же неудобно будет.
← →
Ketmar © (2006-11-12 13:14) [14]>[13] Anatoly Podgoretsky(c) 12-Nov-2006, 13:13
>Рано еще. Там же неудобно будет.
что-то я поутру снисходительный. %-)
← →
Anatoly Podgoretsky © (2006-11-12 13:16) [15]> Ketmar (12.11.2006 13:14:14) [14]
А я с утра уже 5 кб текста на форумы отправил, 15 сообщений.
← →
Ketmar © (2006-11-12 13:18) [16]>[15] Anatoly Podgoretsky(c) 12-Nov-2006, 13:16
>А я с утра уже 5 кб текста на форумы отправил, 15 сообщений.
а я матерюсь злобно. без кофию жизни нет.
← →
Eugem © (2006-11-12 14:21) [17]TT:=sbuf[1]; - эта строка. Если её нет -код работает нормально, ошибок не возникает.
Как только пытаюсь сделать что-то с buf или sbuf, то возникают ошибки во время выполнения программы. Да, sbuf:string, а buf:PChar.
Помогите, плиз
← →
Джо © (2006-11-12 14:28) [18]:-|
Неужели ты ответы не читаешь?
← →
Ketmar © (2006-11-12 14:30) [19]>[18] Джо(c) 12-Nov-2006, 14:28
>Неужели ты ответы не читаешь?
нет, видимо. оно не умеет читать, только писать. чукча-программист.
← →
Eugem © (2006-11-12 15:56) [20]
> нет, видимо. оно не умеет читать, только писать. чукча-программист.
Из того что написали... Кто говорит, что всё правильно. Кто говорит, что нужно выделять память. Напишите как память выделить
← →
Ketmar © (2006-11-12 15:58) [21]>[20] Eugem(c) 12-Nov-2006, 15:56
>Напишите как память выделить
вот здесь помогут: http://antigreen.org/bioreactor/
зыж quousque tandem?!!
← →
MikePetrichenko © (2006-11-12 17:07) [22]
var
Buf: array [0..254] of Char;
BufSize: DWORD;
begin
BufSize := 255;
FillChar(Buf, BufSize, 0);
GetUserName(Buf, BufSize);
....
end;
← →
Eugem © (2006-11-12 17:28) [23]Я вот так написал:
new(buf);
GetUserName(buf,lbuf);// получение имени пользователя
sbuf:=buf;
← →
MikePetrichenko © (2006-11-12 17:40) [24]
> new(buf);
new для PChar??? Оригинально. А размер кто указывать будет, сколько того new нужно выделить?
← →
Dmitrij_K (2006-11-12 17:42) [25]Для Pchar есть StrAlloc StrDispoce
← →
MikePetrichenko © (2006-11-12 17:43) [26]
> Для Pchar есть StrAlloc StrDispoce
Для PChar и всего отсального (кроме типизированных указателей на записи, для которых подойдет New) есть GetMem, FreeMem, HeapAlloc, MemAlloc и т.п.
Рекомендую использовать native API функции управления памятью, так как меньше гемороя будет в будущем.
← →
MikePetrichenko © (2006-11-12 17:46) [27]А вообще, по-моему глупо использовать функции выделения/освобождения памяти для переменных, которые используются исключительно внутри функции и имеют сравнительно не большой фиксированный размер. Проще (и надежнее) обойтись обычным статическим массивом в стеке (локальная переменная функции).
← →
Anatoly Podgoretsky © (2006-11-12 19:05) [28]> MikePetrichenko (12.11.2006 17:40:24) [24]
Ничего оригинального, под PChar и выделит
← →
Anatoly Podgoretsky © (2006-11-12 19:06) [29]> MikePetrichenko (12.11.2006 17:46:27) [27]
Глупо вообще использовать массив, string полностью совместим с PChar
← →
guav © (2006-11-12 19:17) [30]Всё уже сказано, можно только добавить, сколько требуется выделить:
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
ветка Имя компьютера
← →
MikePetrichenko © (2006-11-13 00:43) [31]
> Глупо вообще использовать массив, string полностью совместим
> с PChar
Тоже вариант. Но потребует явного задания длинны строки SetLength для передачи в GetUserName
← →
guav © (2006-11-13 00:57) [32]> [31] MikePetrichenko © (13.11.06 00:43)
> Но потребует явного задания длинны строки SetLength
"...а мне это не интересно! Просьба подсказать другие варианты." (с) Орешник
Это лучший вариант, string используется повеместно и работать с ним в отличии от массива удобно, вот и получать надо сразу в string.
← →
Ketmar © (2006-11-13 00:59) [33]>[32] guav(c) 13-Nov-2006, 00:57
>надо сразу в string.
а я всё по-привычке в массивы получаю. %-)
← →
MikePetrichenko © (2006-11-13 01:00) [34]
> Это лучший вариант, string используется повеместно и работать
> с ним в отличии от массива удобно, вот и получать надо сразу
> в string.
Не спорю. Возможно не лучший (зависит от контекста программы), но уж 100% ясный и простой.
← →
MikePetrichenko © (2006-11-13 01:02) [35]
> а я всё по-привычке в массивы получаю. %-)
та ну! Как ни странно, я тоже. Видимо это старость :(
← →
Ketmar © (2006-11-13 01:36) [36]>[35] MikePetrichenko(c) 13-Nov-2006, 01:02
>та ну! Как ни странно, я тоже. Видимо это старость :(
а за углом поджидает злой маразм. эх, не бывать нам как ЮЗ, ИШ, АП...
← →
MikePetrichenko © (2006-11-13 02:49) [37]
> Как правильно запросить имя пользователя?
И всетаки, IMHO, лучше подойти и вежливо спросить "Как Вас зовут?"
← →
Ketmar © (2006-11-13 02:52) [38]>[37] MikePetrichenko(c) 13-Nov-2006, 02:49
>И всетаки, IMHO, лучше подойти и вежливо спросить "Как Вас
>зовут?"
не забывая, что доброе слово и пистолет намного более действенны, нежели просто доброе слово.
← →
Anatoly Podgoretsky © (2006-11-13 07:38) [39]> MikePetrichenko (13.11.2006 0:43:31) [31]
А в массиве разве не надо явного задания длины, при том два раза
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.062 c