![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
замена символов в файле пропуском
AHoja © (2006-07-27 19:22:00)Здарова, как можно заменить определенный символ в файле пустым местом?
AHoja (2006-07-27 22:49:00) [1]Всем спасибо за помощь
@!!ex (2006-07-27 21:00:00) [2]>>Заменить-то она заменит, только уже в другом файле и не в соответствии с [2].
Другой файл решаеться на раз. Удалять первый, переименовывать....
Вроде так везде обнавление файлов делается.
Сначала создается временный файл, после чего старый удаляеться, временный переименовывается.
А вот несоответствие с условием - это да.....
Но автор же не сказал по какому алгоритму символы заменять.
Ему для конкретно его примера решение дал Джо.
Я постарался дать относительно универсальный пример.
Который заменяет все указанные символы на новые.
Юрий Зотов (2006-07-27 20:57:00) [3]> @!!ex © (27.07.06 19:48) [6]
Заменить-то она заменит, только уже в другом файле и не в соответствии с [2].
@!!ex (2006-07-27 20:57:00) [4]Удалено модератором
@!!ex (2006-07-27 20:52:00) [5]>>Какой размер, по-твоему, имеет Char
По моему он имеет размер 1 байт.
От -127 до 128, если мне конечно память не изменяет... ;)
Fay (2006-07-27 20:21:00) [6]2 @!!ex © (27.07.06 19:56) [10]
Какой размер, по-твоему, имеет Char?
> извени
Величим и магука
@!!ex (2006-07-27 19:56:00) [7]Джо © (27.07.06 19:54) [9]
Хорошо. Тока жестко.
Ладно, извени. Надо мной сегодня тоже ржали... :)
Я объясняю.
Дело в том, что в данном случае я работаю с файлом как с файлом символов.
Согласись, с любым файлом так можно работать.
И если ты откроешь бинарник, то в нем все символы честно заменяться, и если текстовый откроешь - тоже заменяться.
Джо (2006-07-27 19:54:00) [8]Удалено модератором
@!!ex (2006-07-27 19:52:00) [9]Удалено модератором
Джо (2006-07-27 19:49:00) [10]> Для текстовых, для бинарных, пофигу.
Нет, это только для file of char.
@!!ex (2006-07-27 19:48:00) [11]Вот. Для любых файлов. Для текстовых, для бинарных, пофигу.
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;
@!!ex (2006-07-27 19:43:00) [12]можно еще через while, pos, copy, но думаю будет медленнее.
Джо (2006-07-27 19:42:00) [13]Самое простое, но далеко не оптимальное:
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:40:00) [14]Так и надо говорить заменить пробелом. или #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;
AHoja (2006-07-27 19:37:00) [15]пример:
testing
заменить на:
tes ing
@!!ex (2006-07-27 19:27:00) [16]Что такое "Пустое место?"
Вырезать кусочек винчестера? Тогда там будет пусто место... Вакум....