![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Уважаемые участники форума!
нужна помощь. не могу найти ошибку, из-за которой не работает плагин. вот код: Код:
{$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 ContentGetValueW(fn: PWideChar; FieldIndex, UnitIndex: integer;
FieldValue: PWideChar; MaxLen, Flags: integer): integer; stdcall;
var
s: AnsiString;
ext: string;
begin
if (FieldIndex<0) or (FieldIndex >= _FieldsNum) then
begin Result:= FT_NOSUCHFIELD; Exit end;
ext:= LowerCase(ExtractFileExt(fn));
if (Flags and CONTENT_DELAYIFSLOW)>0 then
if (ext<>'') then begin Result:= FT_DELAYED; Exit end;
s:= segdread(fn, FieldIndex);
if s=''
then
Result:= FT_FIELDEMPTY
else
begin
lstrcpynW(FieldValue, PWideChar(Widestring(s)), MaxLen);
Result:= FT_STRINGW;
end;
end;
function ContentGetValue(fn: PAnsiChar; FieldIndex, UnitIndex: integer;
FieldValue: PWideChar; MaxLen, Flags: integer): integer; stdcall;
begin
//Result := ContentGetValueW(PWideChar(WideString(fn)), FieldIndex, UnitIndex, FieldValue, MaxLen, Flags);
Result:=ft_fieldempty;
end;
exports
ContentGetDetectString,
ContentGetSupportedField,
ContentGetValueW,
ContentGetValue;
end.
|
|
#2
|
||||
|
||||
|
Пока вижу только:
Код:
ext:= AnsiLowerCase(ExtractFileExt(fn)); |
|
#3
|
|||
|
|||
|
Не уверен, что можно напрямую делать так
PWideChar(WideString(s)) (это не С++) но вот так должно работать Код:
S:AnsiString; W:WideString; ... W:=S; lstrcpynW(FieldValue, PWideChar(W), MaxLen); |
|
#4
|
||||
|
||||
|
Цитата:
|
|
#5
|
|||
|
|||
|
по задумке плагин должен брать информацию из segd файлов и показывать ее в колонках в тотал командере. но вот беда, он ее не показывает, хотя колонки появляются. информация должнабраться функцией segdread, которая описана в модуле Usegdread. модуль работает я проверял его. видимо дело в либо в функции ContentGetValueW либо в ContentGetValue. либо в модуле ContPlug. но, по идее, этот модуль стандартный и в нем все можно оставлять по умолчанию. по честному, мой код только в модуле Usegdread. остальное я похватал из других примеров. делая по подобию. чувствую себя как обязана с очками. хочется помощь от программиста знающего как писать wdx плагины для тотал командер
|