Wot i usd 2 b abl 2 doo ina previous life:
Function SplitLine(Line:String; SplitCh:Char; Part:Byte):String;
Var Parts:Array[1..99] of String;
Bit:Byte;
i:Integer;
Begin
If(SplitCh='') then Exit;
Bit:=1;
For i:=1 to (Length(Line)) do
If (Line<>SplitCh) then Parts[Bit]:=Parts[Bit]+Line
else Inc(Bit);
SplitLine:=Parts[Part];
End;
Function SplitLine(Line:String; SplitCh:Char; Part:Byte; IfNull:String):String;
Var s:String;
Begin
s:= Splitline(Line,SplitCh,Part);
If(s='') then s:=IfNull;
Splitline:= s;
End;
Function CountSplitParts(Line:String;Sp:Char):Integer;
Var i:Integer;
Count:Integer;
Begin
If(Line='') then Begin
CountSplitParts:=0;
Exit;
End;
Count:=1;
For i:=1 to Length(Line) do If(Line=Sp) then Inc(Count);
CountSplitParts:=Count;
End;
Function ChangeSplitPart(Line:String; SplitCh:Char; Part:Integer; ChangeTo:String):String;
Var i:Integer;
OutStr:String;
Begin
For i:=1 to CountSplitParts(Line,SplitCh) do Begin
If(i<>Part) then OutStr:=OutStr+Splitline(Line,SplitCh,i)+SplitCh
else OutStr:=OutStr+ChangeTo+SplitCh;
End;
Delete(OutStr,Length(OutStr),1);
ChangeSplitPart:=OutStr;
End;
Function SplitStrings(Lines:tHashedStringList; SplitCh:Char; Part:Byte):tHashedStringList;
Var i:Integer;
IntLines:tHashedStringList;
Begin
IntLines:=tHashedStringList.Create;
IntLines.AddStrings(Lines);
For i:=0 to IntLines.Count-1 do IntLines:=SplitLine(IntLines,SplitCh,Part);
SplitStrings:=IntLines;
End;
Function SplitStrings(Lines:tStringList; SplitCh:Char; Part:Byte):tStringList;
Var i:Integer;
IntLines:tStringList;
Begin
IntLines:=tStringList.Create;
IntLines.AddStrings(Lines);
For i:=0 to IntLines.Count-1 do IntLines:=SplitLine(IntLines,SplitCh,Part);
SplitStrings:=IntLines;
End;
Function MousePos(Which:Char):Integer;
var
Mouse: TPoint;
begin
MousePos:=0;
Which:=UpCase(Which);
If GetCursorPos(Mouse) then Case Which of
'X':MousePos:=Mouse.X;
'Y':MousePos:=Mouse.Y;
End;
End;
Function UpperStr(S:String):String;
Var i:Integer;
Begin
If(Length(S)>0) then For i:=1 to Length(S) do S:=UpCase(S);
UpperStr:=S;
End;
Function zExtractPath(Path:String):String;
Begin
Path:=ExtractFilePath(Path);
If(Path[Length(Path)]='\') then Delete(Path,Length(Path),1);
zExtractPath:=Path;
End;
Function FindNextIniSpace(IniS,Section,Key:String):Integer;
Var Ini:tIniFile;
i:Integer;
InternalKey:String;
FoundSpace:Boolean;
Begin
Ini:=TIniFile.Create(IniS);
i:=0;
FoundSpace:=False;
Repeat
Inc(i);
InternalKey:=Key+IntToStr(i);
If(Not(Ini.ValueExists(Section,InternalKey))) then FoundSpace:=True;
Until FoundSpace;
FindNextIniSpace:=i;
Ini.Free;
End;
Function FindInIni(IniS,Section,Key,LookingFor:String):THashedStringList;
Var Ini:tMemIniFile;
InternalKey,ST1:String;
Strs:THashedStringList;
i:Integer;
Begin
Ini:=tMemIniFile.Create(IniS);
Strs:=THashedStringList.Create;
Strs.Clear;
For i:=0 to FindNextIniSpace(IniS,Section,Key) do Begin
InternalKey:=Key+IntToStr(i);
If(Ini.ValueExists(Section,InternalKey)) then Begin
ST1:=Ini.ReadString(Section,InternalKey,'0');
If(Pos(UpperStr(LookingFor),UpperStr(ST1))<>0) then Strs.Add(InternalKey+#9+ST1);
End;
End;
FindInIni:=Strs;
Ini.Free;
End;
Function FindInSL(SL:tHashedStringlist;LookingFor:String):THashedStringList;
Var Strs:THashedStringList;
i:Integer;
Begin
Strs:=THashedStringList.Create;
Strs.Clear;
If(SL.Count>0) then For i:=0 to SL.Count-1 do If(Pos(UpperStr(LookingFor),UpperStr(SL))<>0) then Strs.Add(SL);
FindInSL:=Strs;
End;
Function FindInSL(SL:tStringlist;LookingFor:String):tStringList;
Var Strs:tStringList;
i:Integer;
Begin
Strs:=tStringList.Create;
Strs.Clear;
If(SL.Count>0) then For i:=0 to SL.Count-1 do If(Pos(UpperStr(LookingFor),UpperStr(SL))<>0) then Strs.Add(SL);
FindInSL:=Strs;
End;
Function ReadStringFromIni(IniS,Section,Key:String):String;
Var s:String;
Ini:tIniFile;
Begin
Ini:=tIniFile.Create(IniS);
S:=Ini.ReadString(Section,Key,'');
ReadStringFromIni:=s;
Ini.Free;
End;
Function StrToHashed(LinesIn:tStrings):thashedStringList;
Var LinesOut:tHashedStringList;
i:Integer;
Begin
LinesOut:=tHashedStringList.Create;
For i:=0 to LinesIn.Count-1 do LinesOut.Add(LinesIn.Strings);
StrToHashed:=LinesOut;
End;
Function HashedToStr(LinesIn:thashedStringList):tStrings;
Var LinesOut:tStringlist;
i:Integer;
Begin
LinesOut:=tStringlist.Create;
For i:=0 to LinesIn.Count-1 do LinesOut.Add(LinesIn.Strings);
HashedToStr:=LinesOut;
End;
Function StringsToStringlist(Strs:tStrings):tStringlist;
Var sl:tStringlist;
Begin
sl:= tStringlist.Create;
sl.AddStrings(Strs);
StringsToStringlist:= sl;
End;
Function StringlistToString(LinesIn:tStringList;Sp:Char):String;
Var LineOut:String;
i:Integer;
Begin
If(LinesIn.Count=0) then Begin
StringlistToString:='';
Exit;
End;
LineOut:='';
For i:=0 to LinesIn.Count-2 do LineOut:=LineOut+LinesIn.Strings+Sp;
LineOut:=LineOut+LinesIn.Strings[LinesIn.Count-1];
StringlistToString:=LineOut;
End;
:*(