{$D-,O+,Q-,R-,S-}
unit someStuff;
interface
uses SysUtils,windows,Classes,wcxhead;
function OpenArchive(var ArchiveData:tOpenArchiveData):thandle; stdcall;
function CloseArchive(hArcData:thandle):longint; stdcall;
function ReadHeader(hArcData:thandle;var HeaderData:THeaderData):longint; stdcall;
function ProcessFile(hArcData:thandle;Operation:longint;DestPath,DestName:pchar):longint; stdcall;
function DeleteFiles(PackedFile,DeleteList:pchar):integer; stdcall;
function GetPackerCaps:integer; stdcall;
function getExtendedPath(currentString:string):string;
procedure myStreamWrite(whatToWrite:pchar;myStream:TMemoryStream;addLine:boolean);
procedure Split(const Delimiter: Char;Input: string;const Strings: TStrings);
function CountChar(S : pchar; CharToCount : char) : integer;
function PosEx(SubString: string; s: pchar; StartIndex:integer):integer;
implementation
{TC "ReadOnly" Needed Function--}
function OpenArchive(var ArchiveData:tOpenArchiveData):thandle; stdcall;
begin
ArchiveData.OpenResult:=E_UNKNOWN_FORMAT;
result:=0;
end;
function CloseArchive(hArcData:thandle):longint; stdcall;begin Result:=0;end;
function ReadHeader(hArcData:thandle;var HeaderData:THeaderData):longint; stdcall;begin Result:=E_BAD_ARCHIVE;end;
function ProcessFile(hArcData:thandle;Operation:longint;DestPath,DestName:pchar):longint; stdcall;begin Result:=E_BAD_ARCHIVE;end;
function DeleteFiles(PackedFile,DeleteList:pchar):integer; stdcall;begin result:=E_NOT_SUPPORTED;end;
function GetPackerCaps:integer; stdcall;begin result:=PK_CAPS_NEW or PK_CAPS_MULTIPLE or PK_CAPS_MODIFY or PK_CAPS_OPTIONS or PK_CAPS_HIDE;end;
{--TC ReadOnly...}
function getExtendedPath(currentString:string):string;
var L:tstringlist;
final:string;
i:integer;
begin
if pos('%',currentString)>0 then begin
L:=TStringList.Create;
L.Delimiter:='\';
L.DelimitedText:=currentString;
final:='';
for i:=0 to L.Count-1 do begin
if pos('%',L[i])>0 then begin
if length(Final)>0 then
final:=final+'\'+SysUtils.GetEnvironmentVariable(StringReplace(L[i],'%','',[rfReplaceAll, rfIgnoreCase]))
else final:=SysUtils.GetEnvironmentVariable(StringReplace(L[i],'%','',[rfReplaceAll, rfIgnoreCase]))
end
else begin
if length(Final)>0 then
final:=final+'\'+L[i]
else final:=L[i]
end;
end;
end
else final:=currentString;
result:= StringReplace(final,'\\', '\',[rfReplaceAll, rfIgnoreCase]);
end;
procedure myStreamWrite(whatToWrite:pchar;myStream:TMemoryStream;addLine:boolean);
var i,max:cardinal;
n:byte;
begin
max:=strlen(whatToWrite);
n:=sizeof(char);
if max >0 then begin
for i:=0 to max-1 do myStream.write(whatToWrite[i],n);
if addLine=true then myStream.write(#13#10,2*n);
end;
end;
{funtion to be able to copy wdxinfo to the clipboard--}
procedure Split(const Delimiter: Char;Input: string;const Strings: TStrings);
begin
Assert(Assigned(Strings));
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;
function PosEx(SubString: string; s: pchar; StartIndex:integer):integer;
begin
Result := Pos(SubString, Copy(s, StartIndex, StrLen(s) - StartIndex));
if Result > 0 then Result := Result + StartIndex
end;
function CountChar(S : pchar; CharToCount : char) : integer;
var N : integer;
begin
result := 0;
N := Posex(CharToCount,S,1);
while N <> 0 do begin
inc(result);
N := Posex(CharToCount,S,N+1);
end;
end;
begin
end.
Detected encoding: ASCII (7 bit) | 2
|