![]() |
|
|
#1
|
||||
|
||||
|
Как из файла прочитать 18-ю строку, а в ней 21-й и 22-й символы?
|
|
#2
|
||||
|
||||
|
Код:
Var
f:TextFile;
S:String;
S1,S2:Char;
begin
AssignFile(F,'Text.txt');
reset(f);
for I:=1 to 18 do
readln(f,S);
S1:=S[21];
S2:=S[22];
CloseFile(F);
ShowMessage('Первый символ '+S1+#13+' Второй символ '+S2);
end; |
|
#3
|
||||
|
||||
|
Добрый день!
Вот как прочитать мне стало ясно, а вот как сохранить уже все перепробовал, прощу помощи. Сохранение файла… Перезаписать в 18 строке 21 и 22 символы на ”31” и ”32” |
|
#4
|
||||
|
||||
|
Используй TStringList.
Там есть методы LoadFromFile и SaveToFile. Если что не понятно, то пиши. |
|
#5
|
||||
|
||||
|
Странно много документаций по этому классу, но то, что мне надо я не найду.
|
|
#6
|
|||
|
|||
|
Где-то так:
Код:
var
S : TStringList;
A : String;
begin
S := TStringList.Create;
Try
S.LoadFromFile(AFileName); // В переменной AFileName - полное имя файла
If S.Count < 18 Then Raise Exception.Create('Строк меньше чем 18');
If Length(S[17]) < 22 Then Raise Exception.Create('В строке 18 меньше чем 22 символа');
A := S[17]; // Нумерация строк идет с 0
A[21] := '31';
A[22] := '32';
S[17] := A;
S.SaveToFile(AFileName);
Finally
S.Free;
End;
end; |
|
#7
|
||||
|
||||
|
var
S : TStringList; A : String; begin S := TStringList.Create; Try S.LoadFromFile(AFileName); // В переменной AFileName - полное имя файла If S.Count < 18 Then Raise Exception.Create('Строк меньше чем 18'); If Length(S[17]) < 22 Then Raise Exception.Create('В строке 18 меньше чем 22 символа'); A := S[17]; // Нумерация строк идет с 0 A[21] := '31'; {Чтоб это значение вводил пользователь через Edit1} A[22] := '32'; {Чтоб это значение вводил пользователь через Edit2} S[17] := A; S.SaveToFile(AFileName); Finally S.Free; End; end; Вопрос такой: Как мне Сделать так что б пользователь вводил заменимые символы через Edit1.Text ? (Отрывок из кода) A[21] :=Edit1.Text; ?За ранее благодарен! |
|
#8
|
|||
|
|||
|
Да, так, только надо проверять, что в Edit1 и в Edit2 что-то есть, а так же кол-во символов, т.к. приведенный способ позволяет заменить исключительно один символ, если надо менять один символ на несколько или несколько на несколько, то надо делать подругому.
Код:
var
S : TStringList;
A : String;
C1, C2 : Char
begin
If Length(Edit1.Text) <> 1
Then Raise Exception.Create('Первый символ для замены пустой или их больше 1');
If Length(Edit2.Text) <> 1
Then Raise Exception.Create('Второй символ для замены пустой или их больше 1');
C1 := Copy(Edit1.Text,1,1)[1];
C2 := Copy(Edit2.Text,1,1)[1];
S := TStringList.Create;
Try
S.LoadFromFile(AFileName); // В переменной AFileName - полное имя файла
If S.Count < 18 Then Raise Exception.Create('Строк меньше чем 18');
If Length(S[17]) < 22 Then Raise Exception.Create('В строке 18 меньше чем 22 символа');
A := S[17]; // Нумерация строк идет с 0
A[21] := C1;
A[22] := C2;
S[17] := A;
S.SaveToFile(AFileName);
Finally
S.Free;
End;
end;Измененые и добавленые строки выделены жирным. |