Tu commence par répérer ou se trouve la ligne à lire. Pour cela tu recherche la
chaine '03'. LigneLu:=''; while (not EOF(Ton_Fichier))and(Copy(LigneLu,1,2)<>'03') do ReadLn(Fichier,LigneLu);
Apres ca normalement tu as ta ligne.
Ensuite tu copie les 80 premiers caracteres, tu insere 'E' et tu place les caracteres 82 à 'fin de la ligne'
LigneLu:=copy(LigneLu,1,80)+'E'+copy(LigneLu,82,Length(LigneLu)-82);
A partir de la "LigneLu" est ta phrase, mais avec le 81eme caractere remplacé par 'E'.
Si tu veux le remplacer dans le fichier, je crois que tu est obligé d'en ouvrir 2 en paralleles.
Salut,
Je te propose ceci (à adapter)
var StringList : TStringList; Index, I : Integer; s : string; begin StringList := TStringList.Create; StringList.LoadFromFile('MonFichier.Txt'); // Lecture du fichier for I : = 0 to StringList.Count-1 do begin if Pos('03',StringList[i]) = 1 then // Une ligne qui commence par '03' begin s : = StringList[i]; // Remplacement du caractère s[81] := 'E'; StringList[i] := s; end ; end; StringList.SaveToFile('Unit2.pas'); // Sauvegarde du fichier end;
Ken@vo
<hr size ="2" width="100%">Code, Code, Codec !
[%3C/body ]
Salut,
CptPingu, ta manière est intéressante, mais j'ai une préférence pour celle à Kenavo.
D'ailleurs, ça m'a tellement inspiré (et comme je n'avais rien d'autre
de plus intelligent à faire...) que j'en ai fait une ch'tite fonction :
function ReplaceChar(FName, First: String; Position: Integer; Ch: Char): Boolean; var StringList: TStringList; i: Integer; S: String; begin Result := False; StringList := TStringList.Create; try try StringList.LoadFromFile(FName); for i := 0 to StringList.Count -1 do begin if Pos(First, StringList[i]) = 1 then begin S := StringList[i]; if Position > Length(s) then Exit; S[Position] := Ch; StringList[i] := S; Result := True; end; end; StringList.SaveToFile(FName); except //ShowMessage('Fichier introuvable'); end; finally StringList.Free; end; end;
Que l'on peut appeler ainsi, en reprenant les paramètres de mrangelius :
procedure TForm1.Button1Click(Sender: TObject); begin if ReplaceChar('MonFichier.txt', '03', 81, 'E') then ShowMessage('Remplacement effectué avec succès'); end;
Normalement, elle est robuste comme on dit chez Borland, "béton" comme
on dit chez Bouygues, bref elle gère les erreurs possibles...
Bonne prog'
japee
program Exemple; {$APPTYPE CONSOLE} uses SysUtils, Classes; function MaFonction(const s: string): string; var i: integer; begin result := s; for i := 1 to Length(result) do if result[i] in [',', ';', '?', '!'] then result[i] := '.'; end; var liste: TStringList; i: integer; begin liste := TStringList.Create; liste.LoadFromFile('fichier.txt'); for i := 0 to liste.Count - 1 do liste.Strings[i] := MaFonction(liste.Strings[i]); liste.SaveToFile('fichier.txt'); liste.Free; end.