Post by mikeprogram OnBeforeSavingMessage;
function StringReplace(S, OldPattern, NewPattern: string): string;
Compilation error:
Failed when compiling [Error] (43:5): Type mismatch
Does anyone know why I get a "type mismatch" on these lines when I use them
as an OnBeforeSavingMessage but I do NOT get the type mismatch error when I
compile the same script as an OnBeforeSendingMessage?
NewStr := Copy(NewStr, Offset + Length(OldPattern), 2147483647);
SearchStr := Copy(SearchStr, Offset + Length(Patt), 2147483647);
The type mismatch is shown in red for "2147483647".
(1) I only get the type mismatch when I compile the script below
as an OnBeforeSavingMessage.
(2) When I compile the script below as an OnBeforeSendingMessage,
I don't get the compilation error.
(3) But, either way, the umlaut testcase doesn't get changed to "ue"
TEST � � � � � �
I'm trying to figure out what the code does so I can figure out why it's not
working, but I don't know what the purpose of the "2147483647" is yet.
Do you?
--
program OnBeforeSavingMessage;
function StringReplace(S, OldPattern, NewPattern: string): string;
var
SearchStr, Patt, NewStr: string;
Offset: Integer;
begin
SearchStr := S;
Patt := OldPattern;
NewStr := S;
Result := '';
while SearchStr <> '' do
begin
Offset := AnsiPos(Patt, SearchStr);
if Offset = 0 then
begin
Result := Result + NewStr;
Break;
end;
Result := Result + Copy(NewStr, 1, Offset - 1) + NewPattern;
NewStr := Copy(NewStr, Offset + Length(OldPattern), 2147483647);
SearchStr := Copy(SearchStr, Offset + Length(Patt), 2147483647);
end;
end;
function OnBeforeSavingMessage(var Message: TStringlist; Servername:
string; IsEmail: boolean):boolean;
var s:string;
begin
result:=true;
s:=message.text;
s:=StringReplace(s,'�','ue');
s:=stringreplace(s,'�','oe');
s:=stringreplace(s,'�','ae');
s:=stringreplace(s,'�','Ue');
s:=stringreplace(s,'�','Oe');
s:=stringreplace(s,'�','Ae');
s:=stringreplace(s,'�','ss');
message.text:=s;
end;
begin
end.
--
program OnBeforeSendingMessage;
function StringReplace(S, OldPattern, NewPattern: string): string;
var
SearchStr, Patt, NewStr: string;
Offset: Integer;
begin
SearchStr := S;
Patt := OldPattern;
NewStr := S;
Result := '';
while SearchStr <> '' do
begin
Offset := AnsiPos(Patt, SearchStr);
if Offset = 0 then
begin
Result := Result + NewStr;
Break;
end;
Result := Result + Copy(NewStr, 1, Offset - 1) + NewPattern;
NewStr := Copy(NewStr, Offset + Length(OldPattern), 2147483647);
SearchStr := Copy(SearchStr, Offset + Length(Patt), 2147483647);
end;
end;
function OnBeforeSendingMessage(var Message: TStringlist; Servername:
string; IsEmail: boolean):boolean;
var s:string;
begin
result:=true;
s:=message.text;
s:=StringReplace(s,'�','ue');
s:=stringreplace(s,'�','oe');
s:=stringreplace(s,'�','ae');
s:=stringreplace(s,'�','Ue');
s:=stringreplace(s,'�','Oe');
s:=stringreplace(s,'�','Ae');
s:=stringreplace(s,'�','ss');
message.text:=s;
end;
begin
end.
--