Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 10:12   #1
SergiOD
 
Регистрация: 11.12.2010
Сообщений: 8
По умолчанию Добавление символа в конце строки

Здравствуйте!

Имею txt файл в котором строки типа

Код:
1; 2; 12; 13; 3
3; 2; 12; 13; 3
6; 2; 12; 34; 3
1; 3; 12; 13; 3
и т.д. строк может быть много

Не могу разобраться как добавить в конце каждой строки символ ;
должно стать

Код:
1; 2; 12; 13; 3;
SergiOD вне форума Ответить с цитированием
Старый 09.03.2011, 10:23   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)TStringList+For(простой но не очень надежный метод)
2)Text(текстовый файл)+AssignFile+Reset+While not EoF+ReadLn+(string:=string+';')+Wri teLn+CloseFile(чуточку сложнее и больше кода, но надежнее)
3)через TStream тоже можно, но писать не буду, лень(просто сказал чтоб знали что способ такой есть)

ЗЫ: выберите метод, напишу к нему код(кстати второй метод подразумевает создание временного файла)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2011, 10:27   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Просто:
Код:
var
  s2,s1:string;
begin
s1:='строка';  //Исходная строка
s2:=';';        //знак вставки
//Вставляем знак в конец строки. +1 потому что lenght вернуло с 0, а строки начинаются 1. По этому +1.
Insert(s2,s1,Length(s1)+1);
//Результат "Строка;"
ShowMessage(s1);
end;
TstringList + цикл For .. to .. do и будет вам счастье!

__ДОБАВЛЕНО__

Ну или так=))
Код:
procedure TForm1.sButton2Click(Sender: TObject);
{-------------------------------------------------------------------------------
  Функция: insert1
  Автор:    ArhangeL
  Дата:  2011.03.09
  Входные параметры: st:string
  Результат:    string
  Замена стандартному insert т.к. не даёт установить позицию нового символа в цикле,
  потому что нельзя представить константу как переменную var.
-------------------------------------------------------------------------------}
function insert1(st:string):string;
const
 znak=';';
var
 d:integer;
begin
d:=Length(st)+1; //уст. длинну
insert(znak,st,d);    //втыкаем знак
Result:=st;   //возвращаемся
end;

var
  Ts:TStringList;
  i:Integer;
begin
  Ts:=TStringList.Create;
  try
  Ts.LoadFromFile(ExtractFilePath(ParamStr(0))+'Strings.txt');
  for i:=0 to Ts.Count -1 do
  begin
  ListBox1.Items.Add(insert1(Ts.Strings[i]));
  end;
  finally
   Ts.Free;
  end;
end;

Последний раз редактировалось Человек_Борща; 09.03.2011 в 10:43.
Человек_Борща вне форума Ответить с цитированием
Старый 09.03.2011, 10:57   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а если файл большой то улетит далеко и надолго
Код:
procedure DoIt(fn:string);
var f,f1:Text;
     s:string;
begin
 AssignFile(f,fn);
 AssignFile(f1,fn+'.bak');
 Reset(f);
 Rewrite(f1);
 while not EoF(f) do
  begin
   ReadLn(f,s);
   s:=s+';';
   WriteLn(f1,s);
  end;
 CloseFile(f);
 CloseFile(f1);
 MoveFileEx(PChar(fn),PChar(fn+'.bak'),MOVEFILE_REPLACE_EXISTING);
end;
примерно так.

Цитата:
Просто:
а зачем сие, если просто это
Код:
s:=s+';';
?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.03.2011 в 11:31.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.03.2011, 10:58   #5
SergiOD
 
Регистрация: 11.12.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
2)Text(текстовый файл)+AssignFile+Reset+While not EoF+ReadLn+(string:=string+';')+Wri teLn+CloseFile(чуточку сложнее и больше кода, но надежнее)


ЗЫ: выберите метод, напишу к нему код(кстати второй метод подразумевает создание временного файла)
Выбрал, прошу помощи. о времнным файлом уже догадался, т.к. пытался читать и писать в один файл получал чистый файл.
SergiOD вне форума Ответить с цитированием
Старый 09.03.2011, 11:00   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

ахаха а про это я совсем забыл, видмо надо избавлять от привычки делать из мухи слона=)
Человек_Борща вне форума Ответить с цитированием
Старый 09.03.2011, 11:02   #7
SergiOD
 
Регистрация: 11.12.2010
Сообщений: 8
По умолчанию

Ругается на строку:

MoveFile(PChar(fn),PChar(fn+'.bak') ,MOVEFILE_REPLACE_EXISTING);
[Error] ... Too many actual parameters

Заменю на
... DeleteFile();
... Rename();


Но на этом варианте (procedure DoIt(fn:string) остановлюсь, Спасибо!

Последний раз редактировалось SergiOD; 09.03.2011 в 11:21.
SergiOD вне форума Ответить с цитированием
Старый 09.03.2011, 11:30   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ой, там MoveFileEx надо было.
просто я сначало хотел MoveFile поставить, потому и поставил неверно, сейчас исправлю.

в принципе заменили вы все верно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.03.2011 в 11:33.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Знак переноса строки в конце строки. Kalika Microsoft Office Access 2 12.09.2010 11:27
Знак в конце строки таблицы VistaSV30 Microsoft Office Word 1 02.02.2010 21:29
Убрать символ в конце строки Shouldercannon Общие вопросы Delphi 10 09.01.2010 12:05
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
авто добавление символа ~ в ячейку laser87 Microsoft Office Excel 6 21.12.2008 14:42