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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2008, 17:43   #1
kaka
 
Регистрация: 28.05.2008
Сообщений: 3
По умолчанию интересная программа на паскале

нужно заменить все табуляции в тексте на соответствующее количество пробелов. Суть в том что я в первый ра написал эту прогу так что одна табуляция заменялась на один пробел. но нужно по другому и я не знаю как))) помогите пожалуйста
kaka вне форума Ответить с цитированием
Старый 28.05.2008, 18:01   #2
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

А код можно посмотреть?
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 28.05.2008, 18:03   #3
kaka
 
Регистрация: 28.05.2008
Сообщений: 3
По умолчанию

короче вот что у меня получилось но это не правильно...
Program TabIntoSpace;

var
MyTextFile: Text;
MyNewTextFile: Text;
i: Integer;
S,O: String;

begin
Assign (MyTextFile, 'C:\File2tab.txt');
Assign (MyNewTextFile, 'C:\NewFileS.txt');

Reset(MyTextFile);
Rewrite(MyNewTextFile);
while not EOF(MyTextFile) do
begin
Readln(MyTextFile, S);
for i:=0 to Length(S) do
begin
O[i]:=S[i];
if S[i]=chr(9) then
O[i]:=' ';
end;
WriteLn(MyNewTextFile, O);
end;

Close(MyTextFile);
Close(MyNewTextFile);
end.
kaka вне форума Ответить с цитированием
Старый 28.05.2008, 18:26   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
но нужно по другому и я не знаю как)))
И что же нужно? Что в этом исходнике не правильно?
zetrix вне форума Ответить с цитированием
Старый 28.05.2008, 18:29   #5
kaka
 
Регистрация: 28.05.2008
Сообщений: 3
По умолчанию

надо чтобы одна табуляция в зависимости от позиции заменялась на соответствующее кооличество пробелов а в исходнике заменяется только на один пробел....
kaka вне форума Ответить с цитированием
Старый 28.05.2008, 18:32   #6
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Код:
Program TabIntoSpace;

var
MyTextFile: Text;
MyNewTextFile: Text;
i,j: Integer;
S,O,prom: String;

begin
Assign (MyTextFile, 'C:\File2tab.txt');
Assign (MyNewTextFile, 'C:\NewFileS.txt');

Reset(MyTextFile);
Rewrite(MyNewTextFile);
while not EOF(MyTextFile) do
begin
Readln(MyTextFile, S);
for i:=0 to Length(S) do
begin
O[i]:=S[i];
if S[i]=chr(9) then
prom:='';
for j:=1 to i do prom:=prom+' ';
O[i]:=prom;
end;
WriteLn(MyNewTextFile, O);
end;

Close(MyTextFile);
Close(MyNewTextFile);
end.
Может ты это имел ввиду.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 28.05.2008, 20:40   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Пусть P - позиция символа #09 в строке
N - Следующая позиция после табуляции = ближайшая (кратная 8) + 1
например:
// P - N
// 1 - 9
// 2 - 9
// 3 - 9
// 8 - 9
// 9 - 17
// ...

N := (P-1) div 8 * 8 + 9;

Нужно убрать символ #09 и заменить его C пробелами
C := N-P;
alexBlack вне форума Ответить с цитированием
Старый 28.05.2008, 22:23   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

o:='';
for i=1 to length(s) do // нумерация в строке начинается с 1
if s[i]=#9 then o:=o+copy(' ',1,x) //чему равен x считаем сами
else o:=o+s[i];
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите где ошибки? Не работает программа на Паскале ЯншинаВера Помощь студентам 1 21.05.2008 19:47
Интересная статейка Sibedir Свободное общение 8 23.02.2008 16:00
программа в Паскале vitekbest Помощь студентам 4 17.12.2007 08:33
Программа по матрицам в паскале. drakon803 Помощь студентам 1 12.12.2007 20:11