promenneur77
Messages postés16Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention 4 mai 2008
-
20 janv. 2008 à 14:03
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
4 févr. 2008 à 22:35
moi je debute et franchement c pas evident mais
voila je souhaite rechercher dans un fichier TXT une valeur que j'aurais taper
dans Tedit afin de recuperer l'adresse IP associé
exemple chercher TXT
promenneur77
Messages postés16Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention 4 mai 2008 21 janv. 2008 à 19:19
tu avais raison cantador la nuit porte conseil
j'ai meme fais quelque modif
procedure TForm1.Button1Click(Sender: TObject);
var
Contents:TStringList;
find:boolean;
i:integer;
MonChamp:String;
begin
find:=false;
Contents:=TStringList.Create;
try
Contents.LoadFromFile('C:\install\liste.txt'); //Chargement du fichier
i:=0;
repeat
if Pos(Edit1.Text, Contents[i]) > 0 then
find:=true
else
i:=i+1;
until ((find) or (i=Contents.Count));
if find then
MonChamp:=Contents[i];
if AnsiContainsText(MonChamp, Edit1.text) then
begin // si la chaine contient la recherche
Edit2.text := RightStr(Monchamp,Length(MonChamp)- Pos(' ',MonChamp)); // recuperation de la partie a droite du caractère "espace"
Exit; // sortir de la boucle
end
else
ShowMessage('pas dans la liste')
finally
Contents.free;
end;
end;
end.
et voila ca marche j'ai bien mon message !!!!
maintenant il me faut mettre cette IP dans autre autre fichier a une place donner donc j'ai plus cas taffer
MERCI pour tous
promenneur77
Messages postés16Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention 4 mai 2008 20 janv. 2008 à 19:06
j'ai trouver une solution qui marche mais
procedure TForm1.Button1Click(Sender: TObject);
var
Contents:TStringList;
find:boolean;
i:integer;
begin
find:=false;
Contents:=TStringList.Create;
try
Contents.LoadFromFile('C:\test\test.txt');
i:=0;
repeat
if Pos(Edit1.Text, Contents[i]) > 0 then
find:=true
else
i:=i+1;
until ((find) or (i=Contents.Count));
end;
end;
mais maintenant faut que j'arrive a modifier les donner dans "contents" car si je l'affiche ca me donne "0000 10.25.36.15" et en faite j'ai juste besion de "10.25.36.15" afin de le meme dans un autre fichier
moldov
Messages postés165Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention10 novembre 2008 20 janv. 2008 à 19:35
Salut,
voici ce que je te propose
procedure TForm1.Button1Click(Sender: TObject);
var
Contents:TStringList;
sVar : string;
i:integer;
begin
Contents:=TStringList.Create;
try
Contents.LoadFromFile('C:\test\test.txt'); //Chargement du fichier
for i := 0 to Contents.count -1 do // Parcours de fichier
begin
sVar := Contents[i]; // Recuperation de la chaine du fichier
if AnsiContains(sVar, Edit1.text) then
begin // si la chaine contient la recherche
Edit2.text := AnsiRightStr(sVar,Length(sVar)- Pos(' ',sVar)); // recuperation de la partie a droite du caractère "espace"
Exit; // sortir de la boucle
end;
end;
end;
Voila j'ai pas testé car j'ai pas de delphi sous la main donc peut etre quelques modif de code a faire mais voila l'idée générale.
Bonne Prog
Vous n’avez pas trouvé la réponse que vous recherchez ?
promenneur77
Messages postés16Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention 4 mai 2008 20 janv. 2008 à 21:44
j'ai trouver MERCI :
procedure TForm1.Button1Click(Sender: TObject);
var
Contents:TStringList;
sVar : string;
i:integer;
begin
Contents:=TStringList.Create;
try
Contents.LoadFromFile('C:\install\liste.txt'); //Chargement du fichier
for i := 0 to Contents.count -1 do // Parcours de fichier
begin
sVar := Contents[i]; // Recuperation de la chaine du fichier
if AnsiContainsText(sVar, Edit1.text) then
begin // si la chaine contient la recherche
Edit2.text := RightStr(sVar,Length(sVar)- Pos(' ',sVar)); // recuperation de la partie a droite du caractère "espace"
Exit; // sortir de la boucle
end;
end;
finally
Contents.free;
end;
end;
end.
en faite il fallais mettre strutils dans use
et utiliser AnsiContainsText a la place de AnsiContains ainsi que RightStr a la place de AnsiRightStr
et voila ca mache
par contre je voulais rajouter :
else ShowMessage('pas dans la liste'); si la valeur tape dans edit1.text n'existais pas mais je n'arrive pas a le placer
moldov
Messages postés165Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention10 novembre 2008 20 janv. 2008 à 21:50
Re,
Désolé Contador d'avoir directement donné la reponse.
Sinon pour ton probleme de pas dans la liste, il faut que tu mette un flag a flase au debut et a true si i rentre dans la condition et faire un test a la fin de la boucle afin de tester son état et afficher le message si necessaire..... Je te laisse chercher.
cs_Shai
Messages postés50Date d'inscriptionmardi 8 octobre 2002StatutMembreDernière intervention21 décembre 2011 24 janv. 2008 à 16:24
Si le fichier fait plusieurs Mo, avec une TStringList, tu charge alors plusieurs Mo en mémoire, voici une fonction qui recherche dans un fichier une chaine, et renvoie sa position, j'ai la même fonction pour les fichiers de plus de 2Go ...
{* -----------------------------------------------------------------------------
la Fonction SearchStringInFile Permet de Chercher une Chaine dans Fichier, la fonction renvoi le nombre d'occurence, et peu renvoyer un tableau contenant le premier octet de chaque occurence dans le fichier
@param FileName Chaine contenant le nom du Fichier
@param SearchString Chaine à chercher dans le fichier
@param OffSets Tableau d'Entier qui contiendra les positions de occurences trouvés
@param KeepOffSet Boolean True rempli OffSets, False, ne rempli pas OffSets
@param CaseSensitive Boolean True A est différent de a, False, ignore la casse (plus lent)@param AcceptOverlap Boolean True si le mot à chercher est une répétition cela compte les occurences qui se chevauche, False chaque lettre d'une occurence ne peut être comptabilisé qu'une seule fois (exemple on chercher coco, le fichier contient cocococo, True 3, False 2)
@return Nombre d'occurence Trouvé
------------------------------------------------------------------------------ }function SearchStringInFile(const FileName: string; SearchString: string; out OffSets: TIntegerDynArray; KeepOffSet: Boolean False; CaseSensitive: Boolean True; AcceptOverlap: Boolean = False): Integer;
const
BUF_SIZE: Integer = 1024;
var
FileToSearch: file;
SearchBuf: array of Char;
iSearchBufPos, iSearch, iMark, iCountFound, iRememberFound, iReaded: Integer;
SearchLen: Integer;
AmtTransferred: Integer;
FileModeCopy: Byte;
LastFound: Boolean;
begin
SearchLen := Length(SearchString);
Result := 0;
if SearchLen <= 0 then
Exit;
SetLength(SearchBuf, BUF_SIZE);
iReaded := 0;
if not CaseSensitive then
SearchString := SysUtils.UpperCase(SearchString);
while not Eof(FileToSearch) do
begin
BlockRead(FileToSearch, SearchBuf[0], BUF_SIZE, AmtTransferred); // [0] parce que c'est un tableau dynamique
iRememberFound := iCountFound;
iSearchBufPos := 0;
LastFound := False;
while iSearchBufPos < AmtTransferred do
begin
// Comparaison Octet par Octet de la chaine recherchée
for iMark := iCountFound + 1 to SearchLen do
begin
iSearch := iSearchBufPos + iMark - iRememberFound - 1;
if iSearch >= AmtTransferred then
Break;
if (CaseSensitive and (SearchBuf[iSearch] = SearchString[iMark]))
or (not CaseSensitive and (UpCase(SearchBuf[iSearch]) = SearchString[iMark])) then
begin
Inc(iCountFound);
LastFound := iCountFound >= SearchLen;
if LastFound then
begin
Inc(Result);
if KeepOffSet then
begin
SetLength(OffSets, Length(OffSets) + 1);
OffSets[High(OffSets)] := iReaded + iSearchBufPos - iRememberFound;
end;
iCountFound := 0;
iRememberFound := 0;
Break;
end;
end else begin
iCountFound := 0;
iRememberFound := 0;
Break;
end;
end;
if iSearch >= AmtTransferred then
Break;
if LastFound then
begin
LastFound := False;
if AcceptOverlap then
Inc(iSearchBufPos, 1)
else
Inc(iSearchBufPos, SearchLen)
end
else
Inc(iSearchBufPos, 1);
end;
Inc(iReaded, AmtTransferred);
end;
finally
CloseFile(FileToSearch);
end;
finally
FileMode := FileModeCopy;
end;
end;
Shai Le Troll
!! Aide via F1 !! Pensez-y !!
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer
piratos3
Messages postés13Date d'inscriptionlundi 30 juillet 2007StatutMembreDernière intervention 6 février 2008 28 janv. 2008 à 17:39
AIDEZ MOI SVP ET MERCI
je suis debutant en DELPHI et j'ai un code fait en VB que j'aime bien traduire en delphi
j'ai fait un edit1 edit2 et un bouton ok
je rentre la densite dans edit1 ok je recois la dose dans edit2
voila le code en VB
Dim d(10), t(10) 'd signifie dose et t signifie densité
Dim j, s ' les compteurs
' Tsn densité sous etain et Dgamma dose
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>