Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

Как pchar в string перевести   Найти похожие ветки 

 
h_tray   (2002-12-06 09:28) [0]

В dll есть такая функция для определения лок имени компьютера
-------------------------------------
function gcn:pchar;
var
lpbuffer : array[0..max_computername_length] of char;
cd: dword;
begin
cd:=sizeof(lpbuffer);
GetComputerName(lpbuffer,cd);
result:=lpbuffer;
end;

-----------------------------------------------
В коде вызываю динамически эту функцию
procedure TForm1.Button1Click(Sender: TObject);
var
s:function:pchar;
libhandle:thandle;
name:pchar;
begin
@s:=nil;
libhandle:=LoadLibrary("test.dll");
if libhandle>=32 then begin
@s:=GetProcAddress(libhandle,"gcn");
if @s<>nil then begin
Label1.Caption:=name;// Вот сдесь то он херню а не имя компа end;
end;
freelibrary(libhandle);
end;


 
Alx2   (2002-12-06 09:33) [1]

>h_tray © (06.12.02 09:28)
function gcn(Buffer : pchar; MaxLen : Integer):pchar;
begin
GetComputerName(buffer,Maxlen);
result:=buffer;
end;


 
cpp   (2002-12-06 09:33) [2]

А где вы переменной Name что-либо присваиваете?


 
Alx2   (2002-12-06 09:35) [3]

>cpp © (06.12.02 09:33)
Точно!


 
perov   (2002-12-06 09:42) [4]

Label1.Caption := String(s);


 
oomneeq   (2002-12-06 11:55) [5]

function gcn:pchar;
var
lpbuffer : array[0..max_computername_length] of char;
cd: dword;
begin
cd:=sizeof(lpbuffer);
GetComputerName(lpbuffer,cd);
result:=lpbuffer;//<---- Нехорошо это!
end;

PChar"овский result ссылается на локальный буфер
ой, нехорошо.

да и хэлп о том же:
-----------
A common error when working with PChars is to store in a data structure, or return as a value, a local variable. When your routine ends, the PChar will disappear because it is simply a pointer to memory, and is not a reference counted copy of the string. For example:

function title(n: Integer): PChar;

var
s: string;
begin
s := Format("title - %d", [n]);
Result := PChar(s); // DON"T DO THIS
end;

This example returns a pointer to string data that is freed when the title function returns.


 
Alx2   (2002-12-06 13:20) [6]

>oomneeq © (06.12.02 11:55)
уже проехали. см Alx2 © (06.12.02 09:33)


 
oomneeq   (2002-12-06 14:50) [7]

C учетом
>Alx2 © (06.12.02 09:33)
можно конечно, проехать

но без учета
>oomneeq © (06.12.02 11:55)
можно можно снова тормознуться, хотя может и пронести -
как карта (память) ляжет !
но мы ведь программируем, а не в карты режемся :)


 
alsha   (2002-12-06 15:03) [8]

function gcn: string;
varfunction gcn: string;
var
Len: cardinal;
begin
Len:=127;
SetLength(Result,Len);
GetComputerName(pchar(Result),Len);
SetLength(Result,Len);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=gcn;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
14-51911
SPeller
2002-11-24 13:06
2002.12.16
Избавиться от пункта меню в IE


3-51595
Romario_123
2002-11-26 23:17
2002.12.16
Помогите побороть BLOB поля и картинки!! Помогите Плииизз!!!


1-51806
Дельфятник
2002-12-04 17:45
2002.12.16
Проблема с заполнением данными экземпляра класса.


14-51913
Nimda2000
2002-11-25 09:10
2002.12.16
Просто вопрос!


1-51688
Filat
2002-12-03 19:34
2002.12.16
Подсказки, потоки, приоритеты и т.д.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский