From fe070b42d2ddea9ec14bb186b6cc0b6d11b490c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juha=20Vehvil=C3=A4inen?= Date: Tue, 3 Jun 2003 20:46:51 +0000 Subject: *** empty log message *** svn path=/trunk/Framestein/; revision=675 --- Source/Strz.pas | 364 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 182 insertions(+), 182 deletions(-) (limited to 'Source/Strz.pas') diff --git a/Source/Strz.pas b/Source/Strz.pas index 85ad4a7..12cbf9a 100644 --- a/Source/Strz.pas +++ b/Source/Strz.pas @@ -1,182 +1,182 @@ -unit Strz; - -interface - -uses - Windows; - -type - CharSet = set of Char; - -// General -function MyStrToInt(const S: String): Integer; // some special checking, no exceptions -function MyStrToFloat(const S: String): Extended; // some special checking, no exceptions -function StrToRect(const S: String): TRect; -function Long2Str(L : LongInt) : string; -function SearchAndReplace( S, Old, New:String ):String; -function WordCount(S : string; WordDelims : CharSet) : Integer; - {-Given a set of word delimiters, return number of words in S} -function ExtractWord(N : Integer; S : string; WordDelims : CharSet) : string; - {-Given a set of word delimiters, return the N'th word in S} - -// Filez -function VerifyBackSlash( const FileName:String ):String; - -implementation - -uses - Classes, SysUtils; - -function StrToRect(const S: String): TRect; -var - i: Integer; -begin - Result := Rect(0, 0, 0, 0); - if S='' then Exit; - i := WordCount(S, [' ']); - Result.Left := MyStrToInt(ExtractWord(1, S, [' '])); - if i>1 then - Result.Top := MyStrToInt(ExtractWord(2, S, [' '])); - if i>2 then - Result.Right := MyStrToInt(ExtractWord(3, S, [' '])); - if i>3 then - Result.Bottom := MyStrToInt(ExtractWord(4, S, [' '])); -end; - -function MyStrToInt(const S: String): Integer; -var - St: String; -begin - Result := 0; - if (S='') or (S='-') or (S='0') then Exit; - try - Result := StrToInt(S); - except - St := S; - while Pos('.', St)>0 do - St[Pos('.', St)] := ','; - try Result := Trunc(StrToFloat(St)); except end; - end; -end; - -function MyStrToFloat(const S: String): Extended; -var - St: String; - i: Integer; -begin - Result := 0; - if (S='') or (S='-') or (S='0') then Exit; - St := S; - i := Pos('.', St); - if i>0 then - St[i] := ','; - try - Result := StrToFloat(St); - except - end; -end; - -function VerifyBackSlash( const FileName:String ):String; -begin - if FileName[Length(FileName)]='\' then - Result := FileName - else - Result := FileName + '\'; -end; - -function Long2Str(L : LongInt) : string; - {-Convert a long/word/integer/byte/shortint to a string} -var - S : string; -begin - Str(L, S); - Long2Str := S; -end; - -{-----} - - function WordCount(S : string; WordDelims : CharSet) : Integer; - {-Given a set of word delimiters, return number of words in S} - var - {I,} Count : Integer; {!!.12} - I, SLen : Word; {!!.12} - begin - Count := 0; - I := 1; - SLen:=Length(S); - - while I <= SLen do begin - {skip over delimiters} - while (I <= SLen) and (S[I] in WordDelims) do - Inc(I); - - {if we're not beyond end of S, we're at the start of a word} - if I <= SLen then - Inc(Count); - - {find the end of the current word} - while (I <= SLen) and not(S[I] in WordDelims) do - Inc(I); - end; - - WordCount := Count; - end; - - function ExtractWord(N : Integer; S : string; WordDelims : CharSet) : string; - {-Given a set of word delimiters, return the N'th word in S} - var - I : Word; {!!.12} - Count, Len : Integer; - SLen : Longint; - Str : String; - begin - Count := 0; - I := 1; - Len := 0; - Str := ''; - SLen := Length(S); - -// ExtractWord[0] := #0; - - while (I <= SLen) and (Count <> N) do begin - {skip over delimiters} - while (I <= SLen) and (S[I] in WordDelims) do - Inc(I); - - {if we're not beyond end of S, we're at the start of a word} - if I <= SLen then - Inc(Count); - - {find the end of the current word} - while (I <= SLen) and not(S[I] in WordDelims) do begin - {if this is the N'th word, add the I'th character to Tmp} - if Count = N then begin - Inc(Len); - SetLength(Str, Len); -// ExtractWord[0] := Char(Len); - Str[Len] := S[I]; -// ExtractWord[Len] := S[I]; - end; - - Inc(I); - end; - end; - ExtractWord := Str; - end; - -function SearchAndReplace( S, Old, New:String ):String; -var - Ts : String; - i : Integer; -begin - Ts := S; - i := Pos(Old, Ts); - while i>0 do begin - Delete(Ts, i, Length(Old)); - Insert(New, Ts, i); - i := Pos(Old, Ts); - end; - SearchAndReplace := Ts; -end; - -end. +unit Strz; + +interface + +uses + Windows; + +type + CharSet = set of Char; + +// General +function MyStrToInt(const S: String): Integer; // some special checking, no exceptions +function MyStrToFloat(const S: String): Extended; // some special checking, no exceptions +function StrToRect(const S: String): TRect; +function Long2Str(L : LongInt) : string; +function SearchAndReplace( S, Old, New:String ):String; +function WordCount(S : string; WordDelims : CharSet) : Integer; + {-Given a set of word delimiters, return number of words in S} +function ExtractWord(N : Integer; S : string; WordDelims : CharSet) : string; + {-Given a set of word delimiters, return the N'th word in S} + +// Filez +function VerifyBackSlash( const FileName:String ):String; + +implementation + +uses + Classes, SysUtils; + +function StrToRect(const S: String): TRect; +var + i: Integer; +begin + Result := Rect(0, 0, 0, 0); + if S='' then Exit; + i := WordCount(S, [' ']); + Result.Left := MyStrToInt(ExtractWord(1, S, [' '])); + if i>1 then + Result.Top := MyStrToInt(ExtractWord(2, S, [' '])); + if i>2 then + Result.Right := MyStrToInt(ExtractWord(3, S, [' '])); + if i>3 then + Result.Bottom := MyStrToInt(ExtractWord(4, S, [' '])); +end; + +function MyStrToInt(const S: String): Integer; +var + St: String; +begin + Result := 0; + if (S='') or (S='-') or (S='0') then Exit; + try + Result := StrToInt(S); + except + St := S; + while Pos('.', St)>0 do + St[Pos('.', St)] := ','; + try Result := Trunc(StrToFloat(St)); except end; + end; +end; + +function MyStrToFloat(const S: String): Extended; +var + St: String; + i: Integer; +begin + Result := 0; + if (S='') or (S='-') or (S='0') then Exit; + St := S; + i := Pos('.', St); + if i>0 then + St[i] := ','; + try + Result := StrToFloat(St); + except + end; +end; + +function VerifyBackSlash( const FileName:String ):String; +begin + if FileName[Length(FileName)]='\' then + Result := FileName + else + Result := FileName + '\'; +end; + +function Long2Str(L : LongInt) : string; + {-Convert a long/word/integer/byte/shortint to a string} +var + S : string; +begin + Str(L, S); + Long2Str := S; +end; + +{-----} + + function WordCount(S : string; WordDelims : CharSet) : Integer; + {-Given a set of word delimiters, return number of words in S} + var + {I,} Count : Integer; {!!.12} + I, SLen : Word; {!!.12} + begin + Count := 0; + I := 1; + SLen:=Length(S); + + while I <= SLen do begin + {skip over delimiters} + while (I <= SLen) and (S[I] in WordDelims) do + Inc(I); + + {if we're not beyond end of S, we're at the start of a word} + if I <= SLen then + Inc(Count); + + {find the end of the current word} + while (I <= SLen) and not(S[I] in WordDelims) do + Inc(I); + end; + + WordCount := Count; + end; + + function ExtractWord(N : Integer; S : string; WordDelims : CharSet) : string; + {-Given a set of word delimiters, return the N'th word in S} + var + I : Word; {!!.12} + Count, Len : Integer; + SLen : Longint; + Str : String; + begin + Count := 0; + I := 1; + Len := 0; + Str := ''; + SLen := Length(S); + +// ExtractWord[0] := #0; + + while (I <= SLen) and (Count <> N) do begin + {skip over delimiters} + while (I <= SLen) and (S[I] in WordDelims) do + Inc(I); + + {if we're not beyond end of S, we're at the start of a word} + if I <= SLen then + Inc(Count); + + {find the end of the current word} + while (I <= SLen) and not(S[I] in WordDelims) do begin + {if this is the N'th word, add the I'th character to Tmp} + if Count = N then begin + Inc(Len); + SetLength(Str, Len); +// ExtractWord[0] := Char(Len); + Str[Len] := S[I]; +// ExtractWord[Len] := S[I]; + end; + + Inc(I); + end; + end; + ExtractWord := Str; + end; + +function SearchAndReplace( S, Old, New:String ):String; +var + Ts : String; + i : Integer; +begin + Ts := S; + i := Pos(Old, Ts); + while i>0 do begin + Delete(Ts, i, Length(Old)); + Insert(New, Ts, i); + i := Pos(Old, Ts); + end; + SearchAndReplace := Ts; +end; + +end. -- cgit v1.2.1