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

Вниз

текстовый файл   Найти похожие ветки 

 
mochoni   (2004-07-09 11:37) [0]

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


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

читаеш файл в строку 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  в файл


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

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


 
Reindeer Moss Eater ©   (2004-07-09 12:21) [3]

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

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


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

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


 
Bill ©   (2004-07-09 12:22) [5]

копируем все сиволы до знака #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  в файл


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

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


 
Reindeer Moss Eater ©   (2004-07-09 12:28) [7]

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

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

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


 
Bill ©   (2004-07-09 12:33) [8]

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


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

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


 
Bill ©   (2004-07-09 13:13) [10]

Ну так бы исказал что таблица каждая запись 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  в файл


 
ssk ©   (2004-07-09 13:28) [11]

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


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:32) [12]

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


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

Bill ©   (09.07.04 13:32) [12]

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


 
Bill ©   (2004-07-09 13:40) [14]

угу


 
Ega23 ©   (2004-07-09 13:42) [15]

Зря.


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

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

 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;


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

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



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

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

Наверх




Память: 0.5 MB
Время: 0.022 c
3-1088756176
maximus_
2004-07-02 12:16
2004.07.25
И снова транзакции!


1-1089751091
Pation
2004-07-14 00:38
2004.07.25
TreeView


6-1085730896
panov
2004-05-28 11:54
2004.07.25
Indy v.8 Получение Header ответа сервера.


14-1089028108
syte_ser78
2004-07-05 15:48
2004.07.25
Что такое DNS ?


3-1088672000
GanibalLector
2004-07-01 12:53
2004.07.25
два TIBTransaction !