Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод кода из С++ в Delphi, Случился затык-( 
:(
    Опции темы
Alkash
Дата 4.5.2012, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Доброго времени суток, уважаемые форумчане. В целях получения пищи для мозга перевожу одну библиотечку, написанную на C++, на Delphi. В процессе переписывания кода - возникло 2 проблемы:
1) Имеется функция:
Код

int SomeNet::OpenPatternFile(unsigned char *file)
{
 pf=fopen(file,"rt");
 if(strstr(file,".img")) imgfile=1;
 else imgfile=0;
 return !((int)pf);
}


В процессе перевода получается:
Код

function TSomeNet.OpenPatternFile(filename: string): integer;
begin
 AssignFile(pf,filename);
 if Pos('.img',filename)<> 0 then
  imgfile:=1 else imgfile:=0;
//тут мы должны что-то вернуть, но что я ещё не понял
end;

Собственно вопрос в том, а что я должен вернуть из функции? Я пока так и не понял что значит: return !((int)pf); , тоесть - понятно что pf приводится к int. Только зачем, и в чем смысл?

Проблема 2)

В хидере описан скелет класса, в котором в секции protected определено:
Код

int (*emuf)(int n, float _FAR *in, float _FAR *ou);

в секции public:
Код

 void EmulatePatternFile(int (*p)(int n,
      float _FAR *, float _FAR *))
      {emuf=p;imgfile=2;};
 - как это должно выглядеть на delphi? В дальнейшем коде библиотеки я реализации этих функций не встретил.

Спасибо за внимание.

Это сообщение отредактировал(а) Alkash - 4.5.2012, 09:03


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
AndreyIQ
Дата 4.5.2012, 11:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: нет
Всего: 8



Цитата(Alkash @ 4.5.2012,  08:36)
1) Имеется функция:
Код

int SomeNet::OpenPatternFile(unsigned char *file)
{
 pf=fopen(file,"rt");
 if(strstr(file,".img")) imgfile=1;
 else imgfile=0;
 return !((int)pf);
}


Я пока так и не понял что значит: return !((int)pf); , тоесть - понятно что pf приводится к int. Только зачем, и в чем смысл?

Мои знания в С++ скудны, пусть поправят гуру.
return !((int)pf) - возвращает 0 если файл удалось открыть и 1 если нет
PM MAIL   Вверх
AndreyIQ
Дата 4.5.2012, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: нет
Всего: 8



Цитата(Alkash @ 4.5.2012,  08:36)
Проблема 2)

В хидере описан скелет класса, в котором в секции protected определено:
Код

int (*emuf)(int n, float _FAR *in, float _FAR *ou);

в секции public:
Код

 void EmulatePatternFile(int (*p)(int n,
      float _FAR *, float _FAR *))
      {emuf=p;imgfile=2;};
 - как это должно выглядеть на delphi? В дальнейшем коде библиотеки я реализации этих функций не встретил.

Спасибо за внимание.

Думаю примерно так:
Код

type
  proc_emuf = function(n:integer; var _in, _ou: real):integer;

  TForm1 = class(TForm)
  private
    emuf: proc_emuf;
    imgfile:integer;
  public
    procedure EmulatePatternFile(param1:proc_emuf);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.EmulatePatternFile(param1: proc_emuf);
begin
        emuf:=param1;
        imgfile:=2;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2386 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.