ReadlnUnix

Résolu
craftsystem
Messages postés
143
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
7 mars 2009
- 5 sept. 2007 à 19:11
craftsystem
Messages postés
143
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
7 mars 2009
- 10 sept. 2007 à 04:54
Salut a tous
Je viens de trouver cette fonction sur le net
et j'aurais voulus savoir comment l'utiliser
le posteur n'a pas mit de commentaire
et elle date de 2003:

function readlnUnix(var F : textfile):string;
      var
      ch : char;
      begin
      result:='';
      read(F,ch);
      while (not eof(F)) do
       begin
       if (ch=#10) then exit;
       result:=result+ch;
       read(F,ch);
       end;
      end;

j'aurais voulu  si quelqu'un pourais m'aiguiller
Merci

PS: Comment faire pour analyser ligne par ligne un TRichEdit ? Merci d'avance

Je tourne avec Borland Delphi 2006 personal edition

La Force 2 La Mao C Sa Diversité

5 réponses

f0xi
Messages postés
4205
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
12 mars 2022
37
5 sept. 2007 à 21:31
pardon,

utilisation :

LoadUnixTextFile('monfichierunix.txt', RichEdit1.Lines);

et pour analyser un RichEdit ligne par ligne :

var
  N : integer;
  S : string;
begin
  RichEdit1.Lines.BeginUpdate;
  try
    for N := 0 to RichEdit1.Lines.Count-1 do
    begin
      S := RichEdit1.Lines[N];

      { traitement sur S }

      RichEdit1.Lines[N] := S;
    end;
  finally
    RichEdit1.Lines.EndUpdate;
  end;
end;
3
cs_Delphiprog
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
9 janvier 2013
31
7 sept. 2007 à 22:29
En ce qui me concerne, je réponds à la première question (merci de ne poser qu'un question par topic ).

Pour utiliser la fonction readlnUnix :
1- déclarer une variable fichier texte:
var
  f: TextFile;

2- lui assigner un nom de fichier :
AssignFile(f, 'nom de mon fichier texte');

3- ouvrir le fichier en lecture :
Reset(F);

4- appeler la fonction readlnUnix en lui passant la variable f en paramètre :
aString := ReadlnUnix(f);

5- fermer le fichier :
CloseFile(f);

Et pis c'est tout.
Les méthodes LoadFromFile ont l'avantage d'être simples et rapides à utiliser mais elles ont aussi le gros défaut de charger tout le fichier en mémoire. Dans certains cas, il est encore utile de savoir lire un fichier avec des méthodes natives.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
3
f0xi
Messages postés
4205
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
12 mars 2022
37
5 sept. 2007 à 21:27
ReadLnUnix permet de recuperer les phrases séparé par un EOLN unix (soit le caracter #10) contrairement a ReadLn qui lui detecte les EOLN dos (soit les caracteres #13#10).

en gros cela donne en plus rapide :

procedure LoadUnixTextFile(const FileName : string; Strings : TStrings);
var List : TStringList;
begin
  if not (FileExists(FileName) and Assigned(Strings)) then
    Exit; 
  List := TStringList.Create;
  try
    List.BeginUpdate;
    Strings.BeginUpdate;
    try
      Strings.Clear;
      List.LoadFromFile(FileName);
      Strings.Delimiter := #10;
      Strings.DelimitedText := List.Text;
    finally
      List.EndUpdate;
      Strings.EndUpdate;
    end;
  finally
    List.Free;
  end;
end;
0
craftsystem
Messages postés
143
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
7 mars 2009

5 sept. 2007 à 22:02
Grand Merci

Je m'attender pas a avoir une explication aussi pointue

Encore merci

La Force 2 La Mao C Sa Diversité
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
craftsystem
Messages postés
143
Date d'inscription
samedi 21 juillet 2007
Statut
Membre
Dernière intervention
7 mars 2009

10 sept. 2007 à 04:54
mise a jour de mon programme

<li>//===================================================</li><li>//======================EXECUTER=====================</li><li>procedure TfrmEditeur.ExecuterClick(Sender: TObject);
</li><li>
</li><li>var sprocess, sprocess2, s, sGo, sCopy, MSGend : ansistring;
</li><li> N, msgPos : integer;
</li><li>
</li><li>begin</li><li>Listbox1.Items.Add('Executer EDS');
</li><li> txtedition.Lines.BeginUpdate;
</li><li> try
</li><li>for N:= 0 to txtedition.Lines.Count-1 do</li><li> Begin
</li><li> s:= txtedition.Lines[N];
</li><li> sGo:= txtedition.Lines[N];
</li><li> sprocess:=txtedition.Lines[N];
</li><li> sprocess2:= Copy(sprocess, 1, 3);
</li><li>//=======================FIN=====================</li><li>if sprocess2 = 'fin' then</li><li> exit
</li><li>//=======================MSG=====================</li><li>elseif sprocess2 = 'msg' then</li><li>//Cherche une chaine de caractère commençant par ' " '.</li><li>While true do</li><li>begin// si il y en a une...</li><li>msgPos:= Pos('"', sGo);
</li><li>if msgpos <> 0 then</li><li>begin</li><li>sCopy:= Copy(sGo, msgPos + 1, Length(sGo));
</li><li>if pos('"', scopy) > 0 then
</li><li>begin</li><li>MSGend := '"' + copy(scopy, 1, pos('"', scopy));
</li><li>delete(sgo, msgpos + 1, length(MSGend));
</li><li>end</li><li>else break; // pas de fin de chaine marque par guillemet</li><li>showmessage (MSGend);// ---------------dans MSGend ya ton mot</li><li>end</li><li>else break;
</li><li>end;
</li><li>end;
</li><li>finally
</li><li>txtedition.Lines.EndUpdate
</li><li>end;
</li><li>end;</li>

merci foxi et métanil
La Force 2 La Mao C Sa Diversité
0