Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

mklokov
Статус: 6-й класс
Рейтинг: 23
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 0
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

∙ Pascal / Delphi / Lazarus

Номер выпуска:1739
Дата выхода:06.08.2018, 15:45
Администратор рассылки:Зенченко Константин Николаевич (Модератор)
Подписчиков / экспертов:32 / 34
Вопросов / ответов:3 / 8

Консультация # 20144: Как в Edit1 вывести имя текущего пользователя Windows ? edit1.text:=?????????...
Консультация # 113124: Здравствуйте уважаемые эксперты! Помогите, пожалуйста, с заданием. Задание: Разработать программу получения информации об ЭВМ по её IP-адресу, а именно: имя компьютера, имя пользователя, ОС, общие ресурсы и т. п....
Консультация # 69784: Здравствуйте! С Рождеством, Христиане! Я делаю калькулятор и мне нужна процедура остановки расчета (при очень долгих вычислениях, т.к. длины числел могут перевалить за 2 миллиарда). Т.е. если прога начинает усиленно думать, то при нажатии кнопки она прекращала все свои действия и просто ждала новых заданий. Как это можно осуществить?...

Консультация # 20144:

Как в Edit1 вывести имя текущего пользователя Windows ?
edit1.text:=?????????

Дата отправки: 23.04.2005, 14:55
Вопрос задал: source
Всего ответов: 6
Страница онлайн-консультации »


Консультирует Васильев Павел:

Здравствуйте, source!
var
sUserName: string;
iLength: Cardinal;
begin
iLength := 0;
if GetUserName(nil, iLength) then
begin
if iLength > 0 then
begin
SetLength(sUserName, iLength);
if GetUserName(PChar(sUserName), iLength) then
Edit1.Text := sUserName;
end;
end;
end;

Консультировал: Васильев Павел
Дата отправки: 23.04.2005, 17:18
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует corsar:

Здравствуйте, source!
var P : PChar;S : Cardinal;
begin
S:=100;
P:=StrAlloc(S);
if GetUserName(P,S) then
Edit1.Text:=string(P) else
Edit1.Text:=\'User name not found :)\';
StrDispose(P);
end;

Приложение:

Консультировал: corsar
Дата отправки: 23.04.2005, 17:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Malish:

Здравствуйте, source!
Я дам расширенный ответ. Может ты его и не будешь использовать, но так можно получить чуть больше. ;)
Для этого мы воспользуемся реестром. Там вообще прячется очень много полезной информации, но надо знать, где она лежит. Итак, чтобы использовать реестр, необходимо добавить модуль Registry в Uses. Затем надо объявить переменную типа TRegistry, а дальше открыть нужный ключ и прочитать оттуда все, что хочется. Например, в событии формы OnCreate напишите:
var R:TRegistry; begin R:=TRegistry.Create; {создаем экземпляр объекта} R.RootKey:=HKEY_LOCAL_MACHINE; R.OpenKey(\'SOFTWARE\Microsoft\Windows\CurrentVersion\', False); {#сюда потом запишем необходимые операторы}
R.Free; {уничтожим объект} end;
Чтобы прочесть какие-нибудь данные нужно воспользоваться функцией ReadString (если вам надо прочесть строку, чтобы прочитать число нужно воспользоваться функцией ReadInteger...). Допустим вы хотите, чтобы имя пользователя и название организации выводились с помощью метки. Тогда до оператора Free (после комментария #), впишите:
Edit1.Text:=\'Владелец: \'+R.Readstring(\'RegisteredOwner\')+#13+ \'Организация: \'+R.Readstring(\'RegisteredOrganization\');
Чтобы получить директорию Windows нужно вызвать R.Readstring(\'SystemRoot\');
Обязательно посмотрите этот ключ реестра, там много полезных данных.

Консультировал: Malish
Дата отправки: 23.04.2005, 23:16
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует mycatismurzik:

Здравствуйте, source!
Вот функция, которая возвращает имя текущего пользователя:
function GetUserFromWindows: string;
var
UserName : string;
UserNameLen : Dword;
begin
UserNameLen := 255;
SetLength(userName, UserNameLen);
if GetUserName(PChar(UserName), UserNameLen) then
Result := Copy(UserName,1,UserNameLen - 1)
else
Result := \'Unknown\';
end;
Т. е. теперь ты можешь написать:
edit1.text:=GetUserFromWindows;
Удачи!

Консультировал: mycatismurzik
Дата отправки: 24.04.2005, 00:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Вадим Исаев ака sir Henry (Старший модератор):

Здравствуйте, source!
С помощью функции GetUserName(Буфер_типа_PChar, Length(Буфер_типа_PChar));

Консультировал: Вадим Исаев ака sir Henry (Старший модератор)
Дата отправки: 25.04.2005, 09:15
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Delphin:

Здравствуйте, source!
Пользуйся вот этой процедурой (см. приложение)
Объяви её например в Public а потом пиши где-нить в коде.
edit1.text := GetCurrentUserName;

Приложение:

Консультировал: Delphin
Дата отправки: 25.04.2005, 19:39
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 113124:

Здравствуйте уважаемые эксперты! Помогите, пожалуйста, с заданием.
Задание: Разработать программу получения информации об ЭВМ по её
IP-адресу, а именно: имя компьютера, имя пользователя, ОС, общие ресурсы и т. п.

Дата отправки: 09.12.2007, 18:58
Вопрос задал: Толстолуцких Николай Викторови
Всего ответов: 1
Страница онлайн-консультации »


Консультирует DimonSoft:

Здравствуйте, Толстолуцких Николай Викторович !

Рискну предположить, что в общем случае такая операция просто невозможна. IP-адрес - это не более, чем номер компьютера в сети, который в случае в интернетом вообще присваивается динамически.

Информацию о версии ОС (далеко не всегда правильную) можно получить с использованием PHP, но для этого надо заставить пользователя зайти на соответствующий сайт, но в этом случае речи об IP-адресе просто не идёт, он не будет использоваться вообще.

Подключая т.н. "телепатор", рискну предположить, что речь идёт о получении информации о компьютере, находящемся в локальной сети (Вы об этом не говорили). Если я прав, то Вам придётся, скорее всего, писать две программы: одну - получатель информации по IP-адресу, вторая - установлена на каждом из "клиентских" компьютеров (т.е. тех, о которых мы получаем информацию) и передаёт "получателю" все необходимые (запрошенные) сведения. Обойтись без программы на клиентском компьютере можно, но сложно: не каждая ОС так уж с радостью сообщит всю интересующую Вас информацию :).

Не совсем понятна также формулировка "помогите с заданием". Если речь идёт о том, чтобы подсказать общую идею, как реализровать - то я уже предложил несколько идей. Если за этим словосочетанием скрывается смысл "подскажите литературу, дайте ссылки на статьи по теме", то Google Вам в руки: ищите всё, что связано с работой с сетями, часто бывает полезным известный справочник-FAQ по Delphi под названием DelphiWorld. Если же речь идёт о том, чтобы кто-нибудь написал такую программу вместо Вас (что, я надеюсь, не соответствует действительности), то в такой формулировке вопрос уместнее задавать не здесь.

P.S. Надеюсь, последняя фраза получилась не слишком грубой. :)

Консультировал: DimonSoft
Дата отправки: 09.12.2007, 22:51
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 69784:

Здравствуйте! С Рождеством, Христиане!
Я делаю калькулятор и мне нужна процедура остановки расчета (при очень долгих вычислениях, т.к. длины числел могут перевалить за 2 миллиарда). Т.е. если прога начинает усиленно думать, то при нажатии кнопки она прекращала все свои действия и просто ждала новых заданий. Как это можно осуществить?

Дата отправки: 06.01.2007, 20:30
Вопрос задал: Troyan
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Фёдоров М. Ф.:

Здравствуйте, Troyan!
С рождеством.
Возможно тебе следует использовать ветви.
Например так:

type
TWorkThread = class(TThread)
private
protected
procedure Execute;
end;

var
WorkThread:TWorkThread;

implementation

procedure TWorkThread.Execute;
begin
{Your job here}
end;

procedure startjob(...);
begin
WorkThread:=TWorkThread.Create(False);
end;

procedure pausejob;
begin
WorkThread.Suspend;
end;

procedure stopjob;
begin
WorkThread.Terminate;
end;

procedure resumejob;
begin
WorkThread.Resume;
end;

Консультировал: Фёдоров М. Ф.
Дата отправки: 07.01.2007, 00:10
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное