![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имя класса [D7, Win2k, WinXP]
Phoroon~ © (2006-07-26 20:58:00)Првиет всем!!!
Нужно взять имя класса.
Вот сталкнулся с такой проблемой:
var p: PAnsiChar;
begin
GetClassName(Handle,p,30); //беру имя класса
Caption:=string(p); //в caption идут закорючки (вроде UTF8)
Label1.Caption:= UTF8Decode(p); //конвертирую (равно "пусто")
end;
Как преобразовать?
Loginov Dmitry (2006-07-27 07:30:00) [1]Мефисто (26.07.06 21:18) [2]
А если имя класса меньше 31 символа, то зачем в Caption заносить всю строку?
>Dmitrij_K (26.07.06 21:29) [3]
> У кого меньше?
По хорошему не помешало бы обнулить символы массива (FillChar'ом, например)
Phoroon~ (2006-07-26 22:12:00) [2]Ой, спасибо вам!!!
О памяти, как-то не подумал.
ИМХО
Хотя не мешало бы!!!
Мефисто (2006-07-26 21:42:00) [3]
> Dmitrij_K (26.07.06 21:29) [3]
У меня :) Т.к. размер буфера меньше ;)
Dmitrij_K (2006-07-26 21:29:00) [4]У кого меньше?
Ж)
procedure TForm1.Button1Click(Sender: TObject);
var p : Array[0..255] of char;
begin
GetClassName(Handle,@p[0],SizeOf(p));
Caption := p;
end;
Мефисто (2006-07-26 21:18:00) [5]var
A: String;
begin
SetLength(A, 31);
GetClassName(Button1.Handle, @A[1], 31);
Caption := A;
end;
Dmitrij_K (2006-07-26 21:09:00) [6]PAnsiChar - Указатель на массив байт.
Память под него надо выделять, хорошо AV не получил
procedure TForm1.Button1Click(Sender: TObject);
var p: PAnsiChar;
begin
p := StrAlloc(255);
GetClassName(Handle,p,255);
Caption := p;
StrDispose(p)
end;