Прерывания, Апи и тд

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Прерывания, Апи и тд

Сообщение gen » 20.07.2009 12:08:04

Господа. Лазарус это все же не Делфи. А линукс это не винда.
Полагаю такой код работать в Лазарусе не будет
Код: Выделить всё
  if GetSystemMetrics(SM_NETWORK) and $01 = $01 then
   ShowMessage('Computer is attached to a network!')
else
   ShowMessage('Computer is not attached to a network!');


Хорошо. Тогда такие вопросы. Есть ли замена Апи ф-иям? Какие прерывания в линуксе(21н нету наверно)? Можно ли в нем юзать встроенный ассемблер(можно небольшой код-пример,если не трудно(оформление важно посмотреть))
gen
новенький
 
Сообщения: 74
Зарегистрирован: 18.06.2009 21:04:22

Re: Прерывания, Апи и тд

Сообщение Mr.Smart » 20.07.2009 12:34:19

Полагаю такой код работать в Лазарусе не будет

Будет (только в Windows) если добавить в uses модуль Windows.
Есть ли замена Апи ф-иям?

Некто вам незапрещает пользоваться непосредственно API функцимя той ОС под которую пишите.
Можно ли в нем юзать встроенный ассемблер

Можно. Как и в Delphi. Только есть одно, но. В FreePascal используются ассемблеры с двумя разнами мнемониками комманд Intel и AT&T. выбирается директивой
Код: Выделить всё
{$ASMMODE INTEL}
asm
...
end;
{$ASMMODE ATT}
asm
...
end;
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Прерывания, Апи и тд

Сообщение gen » 20.07.2009 12:41:10

А понял... Не то написал. Я тасм изучал раньше. Интел то есть писать для такой мнемоники?
gen
новенький
 
Сообщения: 74
Зарегистрирован: 18.06.2009 21:04:22

Re: Прерывания, Апи и тд

Сообщение Mr.Smart » 20.07.2009 13:23:37

TASM - поодерживает толко мнемонику Intel.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Прерывания, Апи и тд

Сообщение gen » 12.09.2009 18:39:48

получается что так писать надо?
Код: Выделить всё
function fff(f:integer):integer;  register;
begin
{$ASMMODE INTEL}
asm

end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
fr:integer;
begin
fr:=1;
fff(fr);

end;



А так нельзя?
Код: Выделить всё
function fff(f:integer):integer;  register;
{$ASMMODE INTEL}
asm

end;


Просто в книге Гуида Гейбелса 2 вариант типо. Хотя там для Делфи
gen
новенький
 
Сообщения: 74
Зарегистрирован: 18.06.2009 21:04:22


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 13

Рейтинг@Mail.ru