tonyy
|
Posted: Wed May 15, 2013 14:19 Post subject: |
|
|
спасибо большое за помощь. вот что у меня получилось и что более менее работает. хочется узнать, если здесь возможность для улучшения. нет ли тут некорректностей?
Code: |
{$E wdx}
library Segd1Inf1;
uses
Windows,
SysUtils,
ContPlug,
Usegdread,
Classes;
const
_DetectString: PAnsiChar = 'EXT="SEGD"';
_FieldsNum = 3;
_Fields: array[0.._FieldsNum-1] of PAnsiChar = (
'prof',
'piket',
'data');
procedure ContentGetDetectString(DetectString: PAnsiChar; maxlen: integer); stdcall;
begin
lstrcpynA(DetectString, _DetectString,maxlen);
end;
function ContentGetSupportedField(FieldIndex: integer; FieldName: PAnsiChar;
Units: PAnsiChar; maxlen: integer): integer; stdcall;
begin
if FieldIndex in [0..High(_Fields)] then
begin
lstrcpynA(FieldName,_Fields[FieldIndex],maxlen);
strcopy(Units,'');
Result := FT_STRING;
end else Result := ft_NoMoreFields;
end;
function ContentGetValue(fn: pchar; FieldIndex, UnitIndex: integer;
FieldValue: PByte; MaxLen, Flags: integer): integer; stdcall;
var
s:AnsiString;
begin
s:= segdread(fn, FieldIndex);
Strlcopy (PAnsiChar (Fieldvalue),PAnsiChar(s),maxlen-1);
result:=ft_string;
end;
exports
ContentGetDetectString,
ContentGetSupportedField,
ContentGetValue;
end.
|
проверку на расширение 'segd' я сделал в модуле segdread.
еще у меня есть вопросы по поводу функции ContentGetDetectString зачем она нужна и на сколько критично, если ее убрать?
а также по поводу функции ContentGetValueW - в чем ее отличие от ContentGetValue. есть ли смысл делать все таки через ContentGetValueW? |
|