Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.10.2014, 21:01
helper999999 helper999999 вне форума
Прохожий
 
Регистрация: 30.09.2014
Сообщения: 32
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию ругается на print

Есть некая функция вот как она выглядит
Код:
function tt(parameter: pointer): ptrint;
begin
 SetTimer(Form1.Handle,1,100,@tp);
end;

выдает ошибку [dcc32 Error] Unit1.pas(36): E2003 Undeclared identifier: 'ptrint'
как идентифицировать параметр ptrint или чем заменить?
Ответить с цитированием
  #2  
Старый 23.10.2014, 22:29
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Поскольку
Цитата:
...a CPU-dependent signed integer type cast of a pointer / register, - used for 64 bits compatibility, native under Free Pascal Compiler PtrInt = integer;
a CPU-dependent signed integer type cast of a pointer of pointer, - used for 64 bits compatibility, native under Free Pascal Compiler PPtrInt = PtrInt...
выходит что в делфи может помочь простая замена этого типа на integer, или ещё можно перевести её в процедуру, выкинув бесполезные входной параметр/результат, либо тогда объявить что-то типа
Код:
type
 {$ifdef CPUX86_64}
   tt = function (parameter: pointer): ptrint;
{$else}
   tt = function (parameter: pointer): integer;
 {$endif CPUX86_64}
но правда если это вызов библиотечной функции, то такие выкрутасы видимо не помогут, среда не та
Ответить с цитированием
  #3  
Старый 24.10.2014, 15:41
helper999999 helper999999 вне форума
Прохожий
 
Регистрация: 30.09.2014
Сообщения: 32
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

так правильно будет?:
Код:
unit Unit1;

interface

uses  windows,
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public

    { public declarations }
  end;

var tid: TThreadID;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure tp(hWnd: HWND; uMsg: UINT; idEvent: UINT_PTR; dwTime: DWORD);
  stdcall;
begin
  form1.ListBox1.Items.Append('11');
end;

procedure tt;
begin
 SetTimer(Form1.Handle,1,100,@tp);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 BeginThread(nil,0,@tt,nil,0,tid);
end;


end.
Тут отображено работа таймера в цикле.
Ответить с цитированием
  #4  
Старый 24.10.2014, 17:32
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Чем же правильно, - здесь показана такая галиматья, есть куча пустых параметров, просматривается денатуратная подмена для стандартных компонентов типа TTimer, нафига?
Ответить с цитированием
  #5  
Старый 25.10.2014, 17:36
helper999999 helper999999 вне форума
Прохожий
 
Регистрация: 30.09.2014
Сообщения: 32
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Чем же правильно, - здесь показана такая галиматья, есть куча пустых параметров, просматривается денатуратная подмена для стандартных компонентов типа TTimer, нафига?
нет надо именна показать работу api, api-поток и api-таймер. Что разьве не правильно? какие пустые параметры. Вроде работает без ошибок. Если не правильно можете указать что и где исправить.
Ответить с цитированием
  #6  
Старый 26.10.2014, 03:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Под D7 работает вот такое
Код:
var
 tid: Cardinal;
procedure tp(hWnd: HWND; uMsg, idEvent: UINT; dwTime: DWORD); stdcall;
begin
  form1.ListBox1.Items.Append('11');
end;

procedure tt;
begin
 SetTimer(Form1.Handle,1,100,@tp);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 BeginThread(nil,0,@tt,nil,0,tid);
end;
нету просто в ней некоторых типов используемых в хеке
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025