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 35
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 32
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 35
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
Rejoignez-nous