Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.20;
Скачать: CL | DM;

Вниз

замена символов в файле пропуском   Найти похожие ветки 

 
AHoja   (2006-07-27 19:22) [0]

Здарова, как можно заменить определенный символ в файле пустым местом?


 
@!!ex ©   (2006-07-27 19:27) [1]

Что такое "Пустое место?"
Вырезать кусочек винчестера? Тогда там будет пусто место... Вакум....


 
AHoja   (2006-07-27 19:37) [2]

пример:

testing

заменить на:

tes ing


 
@!!ex ©   (2006-07-27 19:40) [3]

Так и надо говорить заменить пробелом. или #0.
Функция берет строку S и заменяет все символы равные C на пробелы, после чего возвращает преобразованную строку.
Как это связать с файлом, знаешь?

Function ChangeString(S:String; C:Char):string;
var
index:integer;
begin
Result:="";
for index:=1 to Length(S) do
if S[index]=C then
  Result:=Result+#32
else
  Result:=Result+S[index];
end;


 
Джо ©   (2006-07-27 19:42) [4]

Самое простое, но далеко не оптимальное:

var
 Lst: TStrings;
begin
 Lst := TStringList.Create;
 try
   Lst.LoadFromFile("filename");
   StringReplace (Lst.Text,"testing","tes ing",[rfReplaceAll]);
   Lst.SaveToFile("filename");
 finally
   Lst.Free;
 end;
end;


 
@!!ex ©   (2006-07-27 19:43) [5]

можно еще через while, pos, copy, но думаю будет медленнее.


 
@!!ex ©   (2006-07-27 19:48) [6]

Вот. Для любых файлов. Для текстовых, для бинарных, пофигу.

Procedure ChangeFile(InPut_FileName,OutPut_FileName:string; OldChar, NewChar:char);
var
input,output:file of char;
c:char;
begin
AssignFile(input,InPut_FileName);
Reset(input);
AssignFile(output,OutPut_FileName);
Rewrite(output);
repeat
 read(input,C);
 if c=OldChar then
  Write(output,newchar)
 else
  Write(output,c);
until Eof(input);
CloseFile(input);
CloseFile(output);
end;


 
Джо ©   (2006-07-27 19:49) [7]

> Для текстовых, для бинарных, пофигу.

Нет, это только для file of char.


 
@!!ex ©   (2006-07-27 19:52) [8]

Удалено модератором


 
Джо ©   (2006-07-27 19:54) [9]

Удалено модератором


 
@!!ex ©   (2006-07-27 19:56) [10]

Джо ©   (27.07.06 19:54) [9]

Хорошо. Тока жестко.
Ладно, извени. Надо мной сегодня тоже ржали... :)

Я объясняю.
Дело в том, что в данном случае я работаю с файлом как с файлом символов.
Согласись, с любым файлом так можно работать.
И если ты откроешь бинарник, то в нем все символы честно заменяться, и если текстовый откроешь - тоже заменяться.


 
Fay ©   (2006-07-27 20:21) [11]

2 @!!ex ©   (27.07.06 19:56) [10]
Какой размер, по-твоему, имеет Char?

> извени
Величим и магука


 
@!!ex ©   (2006-07-27 20:52) [12]

>>Какой размер, по-твоему, имеет Char
По моему он имеет размер 1 байт.
От -127 до 128, если мне конечно память не изменяет... ;)


 
Юрий Зотов ©   (2006-07-27 20:57) [13]

> @!!ex ©   (27.07.06 19:48) [6]

Заменить-то она заменит, только уже в другом файле и не в соответствии с [2].


 
@!!ex ©   (2006-07-27 20:57) [14]

Удалено модератором


 
@!!ex ©   (2006-07-27 21:00) [15]

>>Заменить-то она заменит, только уже в другом файле и не в соответствии с [2].

Другой файл решаеться на раз. Удалять первый, переименовывать....
Вроде так везде обнавление файлов делается.
Сначала создается временный файл, после чего старый удаляеться, временный переименовывается.

А вот несоответствие с условием - это да.....
Но автор же не сказал по какому алгоритму символы заменять.
Ему для конкретно его примера решение дал Джо.
Я постарался дать относительно универсальный пример.
Который заменяет все указанные символы на новые.


 
AHoja   (2006-07-27 22:49) [16]

Всем спасибо за помощь



Страницы: 1 вся ветка

Текущий архив: 2006.08.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.038 c
1-1151925678
Barvetal
2006-07-03 15:21
2006.08.20
Как сделать, чтобы TImage перестал отображать что-либо?


2-1154426141
Батя
2006-08-01 13:55
2006.08.20
Стили в Delphi


4-1146195109
Progh
2006-04-28 07:31
2006.08.20
Добавление и удаление сетевого ресурса


1-1152025091
Piter
2006-07-04 18:58
2006.08.20
Непонятная работа FindFirst / FindNext


15-1153836536
oldman
2006-07-25 18:08
2006.08.20
Последний день работы...