Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Delphi | PChar into Cardinal
Показать сообщение отдельно

Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Savant
Цитата:
И еще: можно ли получить хендл контрола на форме, если известен его номер?
Можно. Если этот контрол есть твинконтрол
Помести на форму две кнопки:
Код: Выделить весь код
procedure TForm1.Button2Click(Sender: TObject);
begin
  if (Form1.Controls[0] is TWinControl) then
    ShowMessage(IntToStr((Form1.Controls[0] as TWinControl).Handle));
  ShowMessage(IntToStr((Button1 as TWinControl).Handle));
end;
Если ошибка, значит, это - ошибка.
GetTextLen, GetTextBuf, Text Example - пример из Delphi Help
Код: Выделить весь код
Этот пример копирует текст из поля редактирования в строку, заканчивающуюся нулем, а также кладёт строку в другое поле, когда пользователь кликает на кнопке формы.
procedure TForm1.Button1Click(Sender: TObject);

var
  Buffer: PChar;
  Size: Byte;
begin
  Size := Edit1.GetTextLen;       {Получить длину строки Edit1}
  Inc(Size);                      {Добавляем 1 для нуля}
  GetMem(Buffer, Size);           {Динамически создаем буфер}
  Edit1.GetTextBuf(Buffer,Size);  {Копируем в буфер}
  Edit2.Text := StrPas(Buffer);   {Конвертируем буфер в Паскалевскую строку Edit2}
  FreeMem(Buffer, Size);{ Освобождаем занятую память}
end;

Заметим, что такой же результат может быть получен проще:

procedure TForm1.Button1Click(Sender: TObject);

begin
  Edit2.Text := Edit1.Text;
end;

Отправлено: 19:32, 13-01-2005 | #9

Название темы: Delphi | PChar into Cardinal