Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

текстовый файл [D5]


mochoni ©   (2004-07-09 11:37:00) 

фсем привет! объясните плиз как реализовать задачу.
Дан текстовый файл в котором определеная структура последовательности символов.Мне необходимо с начала файла после каждого 13 символа | поставить символ ;
Помогите с реализацией


Sergey Kaminski   (2004-07-09 20:49:00) [1]

А если этих '|' будет в строке точно 13, значит, судя по приведенной строке, эта палочка будет в ней последней. Тогда можно еще ускорить и начать перебор с конца строки до первой "палки".


Sergey Kaminski   (2004-07-09 20:46:00) [2]

А так побыстрее не будет? ;)

 N := 0;
 for I := 1 to Length(S) do
 begin
   if S[I] = '|' then
     Inc (N);
   if N = 13 then
   begin
     NewS := Copy (S,1,I) + ';' + Copy (S,I+1,Length(S));
     Break
   end;
 end;


Ega23   (2004-07-09 13:42:00) [3]

Зря.


Bill   (2004-07-09 13:40:00) [4]

угу


Ega23   (2004-07-09 13:37:00) [5]

Bill ©   (09.07.04 13:32) [12]

Ты в этом уверен?


Bill   (2004-07-09 13:32:00) [6]

to:ssk :) интересный вариант, только параметры цикла считаются перед инициализицией вроде => строка будет пройдена не полностью.


ssk   (2004-07-09 13:28:00) [7]

вот так тоже можно


procedure SetSymbolAfter13(s: string);
const
  AfterSymbol = '|';
  InsertSymbol = ';';
var
 k, count: integer;
begin
 count:=0;
 for k:=1 to Length(s) do
   begin
     if s[k] = AfterSymbol then
       Inc(count)
         else Continue;
     if count=13 then
       begin
         count:=0;
         insert(InsertSymbol, s, k+1);
       end;
   end;
end;


Bill   (2004-07-09 13:13:00) [8]

Ну так бы исказал что таблица каждая запись 13 полей )))
надо разделить поля :))
ну все тоже самое
читаеш файл в строку S
b:=0;
for i:=1 to Length(S) do begin
S2:=S2+S[i];
if S[i]='|' then begin
inc(b);//считаем кол-во '|'
if b=13 then begin
b:=0;
S2:=S2+';';
end;
end;
end;
записываеш строку S2  в файл


mochoni   (2004-07-09 13:01:00) [9]

я просто не коректно произнес условия.Попробую заново.
Имеется строка вида 43frft4tg|"135176000868101"|"ewrfrrtr"|"Т190"||"rtb6ybyt yun"|||"yuyu898h6g67h"|"yuhtyg"|"yuyuhyuh"|1|0|0
в ней 13 знаков (вот таких |).
Вот после этого 13 символа мне нужно поставить знак(вот такой ;)


Bill   (2004-07-09 12:33:00) [10]

Ну да не прав, заменим S[0] на Length(S)
я тут алгоритм изложил  а непрогу написал


Reindeer Moss Eater   (2004-07-09 12:28:00) [11]

нармальный файл, начиная с 5 Delphi в стору 4 гига закатать можно :)

C пятой говоришь?
Ну да ладно.

А это тогда что такое?
for i:=1 to S[ 0] do begin


Bill   (2004-07-09 12:26:00) [12]

Нет ну может я и не правильно понял :))
to : Reindeer Moss Eater
нармальный файл, начиная с 5 Delphi в стору 4 гига закатать можно :)


Bill   (2004-07-09 12:22:00) [13]

копируем все сиволы до знака #13
из одной строки в другую, если втречается #13 то во вторую строку добавляем #13|
ток ошибочка вышла в коде не большая (переполнее не учел :) )

читаеш файл в строку S
b:=1;
for i:=1 to S[0] do begin
if S[i]=#13 then
S2:=S2+S[i]+'|';
else
S2:=S2+S[i];
end;
записываеш строку S2  в файл


ZiRoCool   (2004-07-09 12:22:00) [14]

хмм, били, ты не правельно задачу понял,там автор говорит что нада после каждого триннадцатого символа "|" поставить символ ";", вроде так


Reindeer Moss Eater   (2004-07-09 12:21:00) [15]

Билли, что же это за файл, помещающийся в ShortString?

Кроме того точку с запятой просили ставить не после каждого символа #13, а после каждого тринадцатого символа "|"


mochoni   (2004-07-09 12:17:00) [16]

Плиз! Опишите по падробнее!!


Billi   (2004-07-09 11:42:00) [17]

читаеш файл в строку S
b:=1;
for i:=1 to S[0] do begin
if S[i]=#13 then begin
 S2[b]:=S[i];
 inc(b);
 S2[b]:='|';
end
else
 S2[b]:=S[i];
inc(b);
end;
записываеш строку S2  в файл


Наверх

Титульная страница Поиск, карта сайта Написать письмо