Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2017, 03:08   #1
GcrazyDV
Новичок
Джуниор
 
Регистрация: 03.04.2017
Сообщений: 2
По умолчанию Код из Delphi не работает в Lazarus

Добрый день!
Столкнулся с такой проблемой.
Есть код по определению mac адреса.
При компиляции в lazarus получаю ошибку
unit1.pas(40,36) Error: Incompatible types: got "Char" expected "Byte"
На эту строчку NCB.ncb_command := Char(NCBRESET);
И так ругается на каждую строчку где используется Char;
А в делфи работает все прекрасно. Помогите ребят)

Код:
uses
nb30;

function GetAdapterInfo(Lana: Char): string;
var
Adapter: TAdapterStatus;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBRESET);
NCB.ncb_lana_num := AnsiChar(Lana);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'Адрес не известен';
Exit;
end;

FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := AnsiChar(Lana);
NCB.ncb_callname := '*';

FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'Адрес не известен';
Exit;
end;
Result :=
IntToHex(Byte(Adapter.adapter_addre ss[0]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_addre ss[1]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_addre ss[2]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_addre ss[3]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_addre ss[4]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_addre ss[5]), 2);
end;

function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
Result := GetAdapterInfo(Char(AdapterList.lan a[0]))
else
Result := 'Адрес не известен';
end;
GcrazyDV вне форума Ответить с цитированием
Старый 03.04.2017, 09:37   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
NCB.ncb_lana_num := AnsiChar(Lana);
а на эту не ругается ?
Цитата:
И так ругается на каждую строчку где используется Char;
вот и ответ. Заменить char ==> AnsiChar.

Какая была Delphi? 7 10 ...
была не Unicode версия Delphi и был Char ===Byte
Lazarus это Unicode. и теперь AnsiChar ===Byte
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 03.04.2017, 12:07   #3
GcrazyDV
Новичок
Джуниор
 
Регистрация: 03.04.2017
Сообщений: 2
По умолчанию

Dеlрhі 7.0/
Поменял char на ansichar=> unit1.pas(40,34) Error: Incompatible types: got "Char" expected "Byte"
и точно так же ругается на строчки

NCB.ncb_command := Char(NCBRESET);Ставил AnsiChar, ничего не изменилось, та же ошибка
NCB.ncb_lana_num := AnsiChar(Lana);

Так unit1.pas(42,39) Error: Incompatible types: got "Char" expected "QWord"
на строчку
if Netbios(@NCB) <> Char(NRC_GOODRET) then

Так unit1.pas(51,21) Error: Incompatible types: got "Char" expected "NCB.Array[0..15] Of Byte"
На
NCB.ncb_callname := '*';

В uses использую nb30,windows;
на форумах предлагали поменять windows на LCLIntf, LCLType, LMessages
Попробовал при помощи лазаруса преобразовать проект из делфи.
Hint: Модуль "Windows" в выражении Uses заменён на "LCLIntf, LCLType, LMessages".
Это единственное что поменялось.
И при компиляции ругается на
Unit3.pas(30,12) Error: Identifier not found "TAdapterStatus"

/// и ставил везде вместо Char=> Byte, скомпилировалось, заработало, но мак адрес не показывает...///
Cпасибо, разобрался...[Netbios is not supported on Windows Vista, Windows Server 2008, and subsequent versions of the operating system]

Последний раз редактировалось GcrazyDV; 03.04.2017 в 16:33.
GcrazyDV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите перевести код Pascal в код Lazarus Ляйсан9517 Lazarus, Free Pascal, CodeTyphon 13 22.05.2014 17:19
помогите перевести код с VB в код Lazarus Ляйсан9517 Lazarus, Free Pascal, CodeTyphon 2 22.04.2014 19:31
Надо перевести код с Паскаля в код Lazarus Ляйсан9517 Помощь студентам 7 06.04.2014 22:44
Lazarus исправте код! kolian2000 Паскаль, Turbo Pascal, PascalABC.NET 13 30.11.2012 20:57
кто может объяснить,почему на моем компе программа работает на других нет?код в Delphi Symba Общие вопросы Delphi 1 24.03.2011 01:03