Source file: /~heha/hsn/WdxInfoPacker64.zip/someStuff.pas

{$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