Salut,
Cela est facile sous PHP que je connais un peu mieux mais sous Delphi, je ne sais pas comment m'y prendre. Je veux tout juste extraire les emails d'un fichier texte. Comment faire ?
Merci d'avance
Stephane
Salut,
Cela est facile sous PHP que je connais un peu mieux mais sous Delphi, je ne sais pas comment m'y prendre. Je veux tout juste extraire les emails d'un fichier texte. Comment faire ?
Merci d'avance
Stephane
Salut;
comment sont-ils ordonnés ?
taille du fichier ?
Salut,
le code suivant extrait les adresses e-mails d'un Memo:Pour l'appeler à partir d'un bouton:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 function Extraire_Emails(const Input: String; out Emails: TStringList): Boolean; var I : Integer; Buffer : String; Tokens : TStringList; begin Result := False; Tokens := TStringList.Create; Emails := TStringList.Create; Try Tokens.Delimiter := #32; Tokens.DelimitedText := Input; For I := 0 To Tokens.Count - 1 Do begin Buffer := Tokens.Strings[I]; If Length(Buffer) < 5 Then Continue; If (Pos('@',Buffer) > 1) And (Pos('.',Buffer) > 3) And (Pos('.',Buffer) < Length(Buffer)) Then begin Emails.Add(Buffer); end; end; Result := True; Finally Tokens.Free; end; end;Bonne chance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TForm1.Button1Click(Sender: TObject); var Emails: TStringList; I : Integer; begin If Extraire_Emails(Memo1.Lines.Text,Emails) Then begin For I := 0 To Emails.Count - 1 Do begin ShowMessage(Emails.Strings[I]); end; Emails.Free; end; end;
NABIL74
Merci pour votre aide qui m'est tres precieuse!
Voici le contenu type de ce fichier. C'est le carnet d'adresses de Mozilla Thunderbird:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 // <!-- <mdb:mork:z v="1.4"/> --> < <(a=c)> // (f=iso-8859-1) (B8=Custom2)(B9=Custom3)(BA=Custom4)(BB=Notes)(BC=LastModifiedDate) (BD=RecordKey)(BE=AddrCharSet)(BF=LastRecordKey) (C0=ns:addrbk:db:table:kind:pab)(C1=ListName)(C2=ListNickName) (C3=ListDescription)(C4=ListTotalAddresses)(C5=LowercaseListName) (C6=ns:addrbk:db:table:kind:deleted) (80=ns:addrbk:db:row:scope:card:all) (81=ns:addrbk:db:row:scope:list:all) (82=ns:addrbk:db:row:scope:data:all)(83=FirstName)(84=LastName) (85=PhoneticFirstName)(86=PhoneticLastName)(87=DisplayName) (88=NickName)(89=PrimaryEmail)(8A=LowercasePrimaryEmail) (8B=SecondEmail)(8C=DefaultEmail)(8D=CardType)(8E=PreferMailFormat) (8F=PopularityIndex)(90=AllowRemoteContent)(91=WorkPhone)(92=HomePhone) (93=FaxNumber)(94=PagerNumber)(95=CellularNumber)(96=WorkPhoneType) (97=HomePhoneType)(98=FaxNumberType)(99=PagerNumberType) (9A=CellularNumberType)(9B=HomeAddress)(9C=HomeAddress2)(9D=HomeCity) (9E=HomeState)(9F=HomeZipCode)(A0=HomeCountry)(A1=WorkAddress) (A2=WorkAddress2)(A3=WorkCity)(A4=WorkState)(A5=WorkZipCode) (A6=WorkCountry)(A7=JobTitle)(A8=Department)(A9=Company) (AA=_AimScreenName)(AB=AnniversaryYear)(AC=AnniversaryMonth) (AD=AnniversaryDay)(AE=SpouseName)(AF=FamilyName)(B0=DefaultAddress) (B1=Category)(B2=WebPage1)(B3=WebPage2)(B4=BirthYear)(B5=BirthMonth) (B6=BirthDay)(B7=Custom1)> <(90=5)(81=)(82=holyworks10@gmail.com)(80=0)(85=2)(92=4994290c)(83=1) (84=andrew.sch32@focus-siso.org)(86=ten@hotmail.com)(88=4882c586) (87=3)(89=dsouza@ymail.com)(8A=4)(8B=Deano)(8C=Martin)(8D=Deano Martin) (8E=Deelow)(8F=deelowmartin@me.com)> {1:^80 {(k^C0:c)(s=9)} [1:^82(^BF=5)] [1(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82)(^8A^82)(^8B=)(^8C=) (^8D=)(^8E=0)(^8F=2)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=) (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=) (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=) (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=) (^B8=)(^B9=)(^BA=)(^BB=)(^BC^92)(^BD=1)] [2(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^84)(^8A^84)(^8B=)(^8C=) (^8D=)(^8E=0)(^8F=0)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=) (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=) (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=) (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=) (^B8=)(^B9=)(^BA=)(^BB=)(^BC=0)(^BD=2)] [3(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^86)(^8A^86)(^8B=)(^8C=) (^8D=)(^8E=0)(^8F=1)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=) (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=) (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=) (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=) (^B8=)(^B9=)(^BA=)(^BB=)(^BC^88)(^BD=3)] [4(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^89)(^8A^89)(^8B=)(^8C=) (^8D=)(^8E=0)(^8F=0)(^90=0)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=) (^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=) (^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=) (^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=) (^B8=)(^B9=)(^BA=)(^BB=)(^BC=0)(^BD=4)] [5(^83^8B)(^84^8C)(^85=)(^86=)(^87^8D)(^88^8E)(^89^8F)(^8A^8F)(^8B=) (^8C=)(^8D=)(^8E=2)(^8F=0)(^90=1)(^91=)(^92=)(^93=)(^94=)(^95=) (^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=) (^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=) (^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=) (^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC=0)(^BD=5)]} @$${1{@ <(93=49951b45)>[-1:^80(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82) (^8A^82)(^8B=)(^8C=)(^8D=)(^8E=0)(^8F=3)(^90=0)(^91=)(^92=)(^93=) (^94=)(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=) (^9F=)(^A0=)(^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=) (^AA=)(^AB=)(^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=) (^B5=)(^B6=)(^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC^93)(^BD=1)] @$$}1}@ @$${3{@ <(94=49951c72)>[-1:^80(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82) (^8A^82)(^8B=)(^8C=)(^8D=)(^8E=0)(^8F=4)(^90=0)(^91=)(^92=)(^93=) (^94=)(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=) (^9F=)(^A0=)(^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=) (^AA=)(^AB=)(^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=) (^B5=)(^B6=)(^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC^94)(^BD=1)] @$$}3}@ @$${4{@ @$$}4}@ @$${6{@ <(95=499525bc)>[-1:^80(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^82) (^8A^82)(^8B=)(^8C=)(^8D=)(^8E=0)(^8F=5)(^90=0)(^91=)(^92=)(^93=) (^94=)(^95=)(^96=)(^97=)(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=) (^9F=)(^A0=)(^A1=)(^A2=)(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=) (^AA=)(^AB=)(^AC=)(^AD=)(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=) (^B5=)(^B6=)(^B7=)(^B8=)(^B9=)(^BA=)(^BB=)(^BC^95)(^BD=1)] @$$}6}@
la solution simple consiste à parcourir la fichier séquentiellement, tu peux utiliser le code fourni par NABIL seule problème c'est le nettoyage de l'adresse elle même.
une solution propre serait de savoir l'entête du fichier du carnet d'adresse, et là on se place directement là où débute les adresses. De même il faudrait savoir l'encodage d'une ligne comme ça l'extraction de l'adresse se fera aisement.
Cordialement.
Bonjour,
Je suis d'accord avec notre ami Just-Soft .Après avoir extrait les e-mails,il faut les nettoyer.la solution simple consiste à parcourir la fichier séquentiellement, tu peux utiliser le code fourni par NABIL seule problème c'est le nettoyage de l'adresse elle même.
Dans ce cas, tu peux utiliser le composant "RegExpr", il fera l'affaire. Il est gratuit et il permet de vérifier les adresses e-mails et les extrait d'un texte.
Il est téléchargeable ici: http://www.delphipages.com/uploads/u...me/regexpr.zip
Aide en français:http://www.delphipages.com/uploads/u...me/RegExpF.zip
Télécharge-le et puis copie seulement le fichier "RegExpr.pas" dans le répertoire de ton projet.
Voici comment tu peux utiliser ce composant:
Voici les e-mails qui ont été extraits de ton fichier texte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 implementation uses RegExpr; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var RegExpr: TRegExpr; begin ListBox1.Clear;//affichera les e-mails qui seront extrait du memo1 RegExpr := nil; try RegExpr := TRegExpr.Create; if RegExpr <> nil then begin RegExpr.Expression := '[^\w\d\-\.]([\w\d\-\.]+@[\w\d\-]+' + '(\.[\w\d\-]+)+)[^\w\d\-\.]'; if RegExpr.Exec(Memo1.Text) then repeat ListBox1.Items.Add(RegExpr.Match[1]); until not RegExpr.ExecNext; end; except end; RegExpr.Free; end;
Bonne chance.holyworks10@gmail.com
andrew.sch32@focus-siso.org
ten@hotmail.com
dsouza@ymail.com
deelowmartin@me.com
NABIL74
Re;
je crois que le problème a été résolu d'une bonne façon. Seulement, je pense qu'il faut éviter l'utilisation des composants tiers et essayer de faire mieux. Pour moi, je préfère la deuxième solution qui consiste à avoir la signature du fichier ainsi que l'encodage d'un compte.
bravo NABIL.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager