|
#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; Хорошо написанная программа не требует документации ICQ 9-184-668. |
#3
|
||||
|
||||
Сохранение файла
Добрый день!
Вот как прочитать мне стало ясно, а вот как сохранить уже все перепробовал, прощу помощи. Сохранение файла… Перезаписать в 18 строке 21 и 22 символы на ”31” и ”32” |
#4
|
||||
|
||||
Используй TStringList.
Там есть методы LoadFromFile и SaveToFile. Если что не понятно, то пиши. Хорошо написанная программа не требует документации ICQ 9-184-668. |
#5
|
||||
|
||||
TStringList
Странно много документаций по этому классу, но то, что мне надо я не найду.
|
#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; Измененые и добавленые строки выделены жирным. |