Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.10.2008, 14:51
Аватар для Wipahacker
Wipahacker Wipahacker вне форума
Начинающий
 
Регистрация: 01.06.2007
Адрес: ДОНЕЦК
Сообщения: 112
Репутация: 10
Сообщение Файл

Как из файла прочитать 18-ю строку, а в ней 21-й и 22-й символы?
Ответить с цитированием
  #2  
Старый 06.10.2008, 16:42
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Код:
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  
Старый 07.10.2008, 10:24
Аватар для Wipahacker
Wipahacker Wipahacker вне форума
Начинающий
 
Регистрация: 01.06.2007
Адрес: ДОНЕЦК
Сообщения: 112
Репутация: 10
Сообщение Сохранение файла

Добрый день!

Вот как прочитать мне стало ясно, а вот как сохранить уже все перепробовал, прощу помощи.

Сохранение файла…
Перезаписать в 18 строке 21 и 22 символы на ”31” и ”32”
Ответить с цитированием
  #4  
Старый 07.10.2008, 13:04
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Используй TStringList.
Там есть методы LoadFromFile и SaveToFile. Если что не понятно, то пиши.
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #5  
Старый 07.10.2008, 15:42
Аватар для Wipahacker
Wipahacker Wipahacker вне форума
Начинающий
 
Регистрация: 01.06.2007
Адрес: ДОНЕЦК
Сообщения: 112
Репутация: 10
Сообщение TStringList

Странно много документаций по этому классу, но то, что мне надо я не найду.
Ответить с цитированием
  #6  
Старый 07.10.2008, 16:11
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,053
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Где-то так:
Код:
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  
Старый 08.10.2008, 18:38
Аватар для Wipahacker
Wipahacker Wipahacker вне форума
Начинающий
 
Регистрация: 01.06.2007
Адрес: ДОНЕЦК
Сообщения: 112
Репутация: 10
Сообщение Файл

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  
Старый 08.10.2008, 19:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,053
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да, так, только надо проверять, что в 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;

Измененые и добавленые строки выделены жирным.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter