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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Jimhucksly
Статус: 5-й класс
Рейтинг: 788
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 727
∙ повысить рейтинг »
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 487
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Номер выпуска:1440
Дата выхода:04.10.2009, 01:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:575 / 206
Вопросов / ответов:1 / 3

Вопрос № 172727: program ZAPUSK_IMYA_PK_NoForm; USES Windows, Messages,ShellAPI, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; {$R *.res} LABEL ZAGR; VAR Vr,Dt,AF : TDateTime; strD,strT,S1 : STRING;...



Вопрос № 172727:


program ZAPUSK_IMYA_PK_NoForm;
USES
Windows, Messages,ShellAPI, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
{$R *.res}
LABEL ZAGR;
VAR
Vr,Dt,AF : TDateTime;
strD,strT,S1 : STRING;
Command,Params : STRING;
CommandP,SPch : PChar;
ID_Handle,ID_Task,ID_Handle2 : HWND;
ID_Long : LONGINT;
ID_bool,SigLB,IDboolF : BOOLEAN;
F : TEXTFILE;
DVf,I : INTEGER;
// ++++++++++++++++++++
J : INTEGER;
BoolL: LONGBOOL;
SSi,SSr : PChar;
StrP1 : PChar;
R_bool: BOOL;
si : TStartupInfo;
pi : TProcessInformation;
Rez_IntL : LongInt;
// nnnnnnnnnnnnn
ssID,SS : STRING;
ID : INTEGER;
// NNNNNNNNNNNNNNNNNNNN
KOD_LastErr : Cardinal;
buffer : STRING[MAX_COMPUTERNAME_LENGTH+1];
size : DWORD;
begin


begin

///////////////////////////////////////////
// ЧТЕНИЕ ИМЕНИ ПК
size:=siz eof(buffer);
SS:=IntToStr(size);
ShowMessage(' РАЗМЕР БУФЕРА ИМЕНИ ПК = ' + SS);
R_bool:=GetComputerName(buffer,&size);

//88888888888888888888888888888888888888888
Application.Terminate;
// 8888888888888888888888888888888888888888

{++++++++++++++++++++++++++++++++++++++++++++++++++++ }
end;

end.
При ТРАНСЛЯЦИИ ПОЛУЧАЮ ОШИБКУ В ОПЕРАТОРЕ
R_bool:=GetComputerName(buffer,&size);

[Error] ZAPUSK_IMYA_PK_NoForm.dpr(44): E2010 Incompatible types: 'ShortString' and 'PAnsiChar'

R_bool:=GetComputerName(buffer,<МАРКЕР > &size);


Не подскажите в чем моя ошибка.

Отправлен: 29.09.2009, 00:40
Вопрос задал: Кулешов Владимир Григорьевич, Посетитель
Всего ответов: 3
Страница вопроса »


Отвечает Andrey Popkov, 3-й класс :
Здравствуйте, Кулешов Владимир Григорьевич.

в приложении работающая функция
Редактирование ответа по просьбе ответившего.
-----
∙ Отредактировал: Mustang777, Модератор
∙ Дата редактирования: 29.09.2009, 02:50 (время московское)

Приложение:

Ответ отправил: Andrey Popkov, 3-й класс
Ответ отправлен: 29.09.2009, 00:50

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 254822 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Шичко Игорь, Практикант :
    Здравствуйте, Кулешов Владимир Григорьевич.
    У Вас практически правильный код.
    Только нужно подправить немного с переменными.

    Функция GetComputerName(buffer, size);
    Переменная buffer - должна быть типа PAnsiChar , а у Вас STRING[MAX_COMPUTERNAME_LENGTH+1]; - это ShortString
    Перед переменной size нет необходимости ставить значок &

    Удачи.

    Приложение:

    Ответ отправил: Шичко Игорь, Практикант
    Ответ отправлен: 29.09.2009, 07:58

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 254825 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Anton A., 1-й класс :
    Здравствуйте, Кулешов Владимир Григорьевич!

    Функция GetComputerName имеет следующие типы параметров:
    func Windows.GetComputerName: function(lpBuffer: PAnsiChar; var nSize: Cardinal): LongBool, где

    * PAnsiChar - указатель на первый элемент массива AnsiChar (т.к. начинается с заглавной P),
    * Cardinal - просто переменная или число соответствующего типа.


    Поэтому в Вашей программе следует исправить строчку:
    R_bool:=GetComputerName(buffer,&size);
    на:
    R_bool:=GetComputerName(@buffer, size);

    Где @buffer - искомый указатель, size - просто переменная соответствующего типа. Ошибка была в типах переменных.


    Теперь всё компилируется.

    Ответ отправил: Anton A., 1-й класс
    Ответ отправлен: 29.09.2009, 08:35

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 254827 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.9 от 25.09.2009

    В избранное