|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
ошибка при написании wdx плагина
Уважаемые участники форума!
нужна помощь. не могу найти ошибку, из-за которой не работает плагин. вот код: Код:
{$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 плагины для тотал командер
|