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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 01:54   #1
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию как работает данная процедура?

Код:
function S(p:Dword;pv:Pointer;dw:Dword): Integer ; stdcall ; External 'ftd2xx.dll' name 'FT_ListDevices'; //предположительно зачем то обращается к dll

Function N(t: integer): STRING;
var
A: Array [1..6] of char;
Begin
  s(t,@A,$40000000); //вобще не знаю
  Result := A;//это что то очень неопознанное
End;
procedure TForm1.FormShow(Sender: TObject);
begin
 Form1.Caption:=N(0); //тут видимо выводит в caption формы значение N, но зачем там 0 не понятно но без него не работает
end;
end.
подскажите пожалуйста

Последний раз редактировалось fize; 14.12.2009 в 01:57.
fize вне форума Ответить с цитированием
Старый 14.12.2009, 02:30   #2
MaGWaY_minsk
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 35
По умолчанию

Ну, рискну предположить что "s(t,@A,$40000000);" это вызов какой-то процедуры описанной выше, или, даже скорее всего описанной в ftd2xx.dll.
По этому нужно узнать что за процедура S и всё станет ясно.
MaGWaY_minsk вне форума Ответить с цитированием
Старый 14.12.2009, 10:36   #3
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию

S это процедура статически загруженная (загр .после старта программы и до окончания работы прогр.) из ftd2xx.dll.

Название процедуры в dll - "FT_ListDevices". По названию можно предположить что она выводит список устройств.

Яндекс сказал что ftd2xx.dll это библиотека для работы с USB.

Описание функции:
Цитата:
FT_STATUS FT_ListDevices ( PVOID pvArg1,PVOID pvArg2, DWORD dwFlags )
Parameters
pvArg1 Meaning depends on dwFlags
pvArg2 Meaning depends on dwFlags
dwFlags Determines format of returned information
Если описание правильное то лучше описывать её так:
Код:
function S(p,pv:Pointer;dw:Dword): Integer;
первые два параметра - указатели на данные которые вернет(?) функция, третий флаг который определяет формат результата.

Код:
Function N(t: integer): STRING;
var
A: Array [1..6] of char;
Begin
  s(t,@A,$40000000); //вобще не знаю
  Result := A;//это что то очень неопознанное
End;
N - функция в которой используется S, которая возвращает результат в удобном виде (в отличии от S).

Код:
s(t,@A,$40000000);
t - неизвестно что это. В приведенном коде не указано. По логике это указатель на какие-то данные.
@A - указатель на массив символов. Сюда выводится результат.
$40000000 - показывает какой результат нужен.

Код:
 Result := A;//это что то очень неопознанное
непонятно, почему это не опознанное просто возвращает результат функции.

Возможно, N должен вернуть строку в которой будут буквы всех устройств подключенных к usb, или что-то подобное.

Код:
Form1.Caption:=N(0);
в заголовке появится первая буква, того что вернула s.

Большую часть того что написал, я придумал, т.к. нет документации по dll, что-то может быть неверно.

В общем если найти док. по этой dll то все станет понятно.

Можно было еще написать что за переменная t и какой в итоге результат (что в заголовке формы?)

Последний раз редактировалось Armorer; 14.12.2009 в 10:39.
Armorer вне форума Ответить с цитированием
Старый 14.12.2009, 12:54   #4
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Цитата:
Можно было еще написать что за переменная t и какой в итоге результат (что в заголовке формы?)
я привел весь код программы.
Код:
unit Unit1;
interface
uses
 Windows, SysUtils, Forms,  Classes, Controls, StdCtrls;
type
 TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
end;
var
  Form1: TForm1;
implementation
{$R *.dfm}

function S(p:Dword; v:Pointer; w:Dword):Integer;
stdcall;
External 'ftd2xx.dll'
name 'FT_ListDevices';

Function N(i:integer):STRING;
var
A:Array [1..5] of char;
Begin
  s(i,@A,$40000000);
  N := A;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
listbox1.Items.Add ('Found: '+N(0));
end;

end.
что такое t не знаю. сейчас выводится в листбокс серийный номер усб устройства
fize вне форума Ответить с цитированием
Старый 14.12.2009, 13:06   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

господа, я конечно извиняюсь, но кто будет читать доки (+ обсуждение + на форуме выложенные) на D2XXUnit.pas (в дельфи) при использовании ftdi драйвера?
см. стр.2,3 - где четко прописано, что по данному адресу (точке входа) идет список проинсталлированных устройств ftdi
Изображения
Тип файла: jpg Screen1.jpg (8.1 Кб, 109 просмотров)
Тип файла: jpg Screen0.jpg (47.2 Кб, 107 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 14.12.2009 в 14:04.
raxp вне форума Ответить с цитированием
Старый 14.12.2009, 13:26   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
t - неизвестно что это. В приведенном коде не указано. По логике это указатель на какие-то данные.
Возможно это хэндл функции или дллки.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает процедура Golovastik SQL, базы данных 2 22.11.2009 14:22
Как быстро узнать исть ли данная строка в массиве из строк? Alex Cones Общие вопросы Delphi 10 27.08.2009 08:57
Хранимая процедура не работает! Только_Учусь SQL, базы данных 6 08.09.2008 09:22
Процедура не работает Михаил Юрьевич Общие вопросы Delphi 4 03.06.2008 07:22
не работает хранимая процедура yulia БД в Delphi 11 28.05.2007 19:00