Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.057 c
15-1153485325
разводящий
2006-07-21 16:35
2006.08.20
Гипноз


3-1150286095
Nicky
2006-06-14 15:54
2006.08.20
Как написать код, чтобы открывался файл справки при инсталляции п


4-1146456876
kernel
2006-05-01 08:14
2006.08.20
Add resource


1-1152515177
Stanislav
2006-07-10 11:06
2006.08.20
Запуск службы от имени пользователя


2-1153995389
Couter Terranist
2006-07-27 14:16
2006.08.20
Редактирование полей + запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский