Czy da sie z podanego tekstu w jakis szybki sposob wydobyc wszystkie adresy e-mail? Bo mam tekst w ktorym adresy e-mail sa w sposob nieregularny umieszone w adresach ogolnych - i nie wiem jak to zrobic zeby je wszystkie wydobyc :/ Czy ktos zna na to jakis szybki sposob?
ja nie widzę innego wyjścia jak przeszukanie tekstu w poszukiwaniu '@' a następnie kopiowanie znaków znajdujących się po obu stronach @-y do napotkania spacji...
można też użyć wyrażeń regularnych: http://www.regular-expressions.info/delphi.html
Zobacz sobie źródło Email Extractor [soczek]
Sory ze odswizam temat ale tez mam z tym problem jak skopiowac "@" + wyrazy dolaczone do niej ??
Miły napisał(a)
Sory ze odswizam temat ale tez mam z tym problem jak skopiowac "@" + wyrazy dolaczone do niej ??
procedure TForm1.XiButton1Click(Sender: TObject);
var
PoMalpie, PrzedMalpa, Mail, Tekst: String;
I: Integer;
begin
Tekst:= Memo1.Lines.Text;
while pos('@', Tekst)<>0 do
begin
PoMalpie:= Copy( Tekst, pos('@', Tekst)+1, posEx(' ', tekst, pos('@', Tekst))-pos('@', Tekst)-1 );
PrzedMalpa:='';
for i:=pos('@', Tekst) downto 1 do
if Tekst[i] = ' ' then break else PrzedMalpa := Tekst[i] + PrzedMalpa;
Mail:= PrzedMalpa+PoMalpie;
Delete(Tekst, 1, posEx(' ', tekst, pos('@', Tekst)));
Showmessage(Mail);
end;
end;
Dzieki za gotowca, ale czy kompilowales ten projekt bo mi wywala blad przy posEx ;/
dodalem to pod impemetation
function PosEx(SubStr, Str: string; PosStart: Integer): Integer;
begin
if Pos(SubStr, copy(Str, PosStart, Length(Str)-PosStart+1))=0 then Result:=0
else Result:=Pos(SubStr, copy(Str, PosStart, Length(Str)-PosStart+1))+PosStart-1;
end;
komp;iluje sie ale nie dzial tak jak powinno ;/
Zadeklarowalem PosEx bo wczesniej mi to nie dziala a mam delphi 7 ;/ nie wiem czemu
Miły napisał(a)
Zadeklarowalem PosEx bo wczesniej mi to nie dziala a mam delphi 7 ;/ nie wiem czemu
Zapomniałem dopisać ... PosEx jest w StrUtils - dopisz to do uses
Kurcze wyszukiwanie dziala, ale jesli wpisze "sfsdfsd [email protected]" to znajduje tylko costam@..... Moglbys to poprawic??
boże... pomyśl troche, napisz sobie warunek, że jeżeli nie ma żadnej spacji po małpie to kopiuj do końca...
sory ze cie tak mecze i ja tego nie robie ale kurcze probuje. W tym tekscie mail znajduje sie pomiedzy :[email protected]" jak to zrobic zeby bylo zamiast spacji?
sory ze cie tak mecze i ja tego nie robie ale kurcze probuje. W tym tekscie mail znajduje sie pomiedzy :[email protected]" jak to zrobic zeby bylo zamiast spacji?
Wrzuć Memo1 i Memo2 i Button na formę. W Memo1 jest jakiś tekst z adresami, a po kliknięciu na Button, w Memo2 wyświetlą się adresy, które znajdują się między : i " (dwukropkiem i cudzysłowem). Tak jak chciałeś.
procedure TForm1.Button1Click(Sender: TObject);
var
PoMalpie, PrzedMalpa, Mail, Tekst: String;
I, f: Integer;
begin
for f:=0 to Memo1.Lines.Count -1 do begin
Tekst:= Memo1.Lines.Strings[f];
while pos('@', Tekst)<>0 do
begin
PoMalpie:= Copy( Tekst, pos('@', Tekst)+1, posEx('"', tekst, pos('@', Tekst))-pos('@', Tekst)-1);
PrzedMalpa:='';
for i:=pos('@', Tekst) downto 1 do
if Tekst[i] = ':' then break else PrzedMalpa := Tekst[i] + PrzedMalpa;
Mail:= Przedmalpa+PoMalpie;
Memo2.Lines.Add(Mail);
break;
end;
end;
end;
Weź spójrz na kod i zauważ gdzie znajdują się te znaki.
Jeśli tego już nie zatrybisz, to weź się lepiej za zamiatanie, a nie za programowanie.
MYśLEć [!!!] [!!!] [!!!]