Pytający tak się odgrażał, że napisał specjalnie jeszcze na unit1. Tak w końcu wiadomo co chce zrobić. Podałem mu tam taki kod, który według mnie robi to co on chce. Pewnie da się prościej, ale ja tak to wykombinowałem. I wspomniałem tam, ze o wiele łatwiej było by RegExprem, ale pytający ma to cnyba w... głębokim poważaniu. Podaje kod tutaj, może komuś się przyda
function GetKickData(DataToParse : string; var AKickedBy, AChannel, AReason : string) : boolean;
const
Kick_Marker = 'KICK #';
var
X : integer;
begin
AChannel := '';
AReason := '';
X := Pos(':', DataToParse);
Result := X = 1;
if Result then
begin
X := Pos(' ', DataToParse);
Result := X > 0;
if Result then
begin
AKickedBy := Copy(DataToParse, 2, X - 1);
X := Pos('!', AKickedBy);
AKickedBy := Copy(AKickedBy, 1, X - 1);
X := Pos(Kick_Marker, AnsiUpperCase(DataToParse));
Result := X > 0;
if Result then
begin
AChannel := Copy(DataToParse, X + Length(Kick_Marker) - 1, MaxInt);
AReason := AChannel;
X := Pos(' ', AChannel);
AChannel := Copy(AChannel, 1, X - 1);
X := Pos(':', AReason);
AReason := Copy(AReason, X + 1, MaxInt);
end;
end
else
begin
AKickedBy := '';
end;
end;
end;
procedure TForm1.Button1Click(Sender : TObject);
const
Source_Data = ':[email protected] KICK #kanalik oles` :testowy powood kopa';
var
KickedBy, Chn, Rsn : string;
begin
if GetKickData(Source_Data, KickedBy, Chn, Rsn) then
begin
Memo1.Clear;
Memo1.Lines.Add('Wykopano z kanału: ' + Chn);
Memo1.Lines.Add('Wykopany przez: ' + KickedBy);
Memo1.Lines.Add('I powód wykopania: ' + Rsn);
Clientsocket1.Socket.SendText((':ChanServ JOIN ' + Chn);
end;
end;