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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2006, 16:13   #1
Ruffian
 
Регистрация: 14.11.2006
Сообщений: 5
По умолчанию нужна помощь по работе с строками файлов...

Привет всем! У меня такая проблема, вернее задача...
Как написать программу для отрытия файла, поиски строки в нём, редоктирования, и закрывания с сейвом результатов я знаю...))))
А передо мной сейчас стоит задача о поиске n-ого по счёту числа в строчке и изменения его (умножения на 60) после чего необходимо перейти к следующей строчке...и зделать тоже самое...Прошу помочь как можно быстрее...(напишите всё плиз поподробнее, а то я ещё совсем зелёный програмист)))) Заранее спасибо.


ЗЫ все числа в файле стоят через запятую...
Ruffian вне форума Ответить с цитированием
Старый 14.11.2006, 16:27   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Все очень просто от for i:=0 to lenght(string)-1 выполняешь поиск запятых:
Нашел одну, значит следующее число - второе в строке, нашел шестую - следующее число будет седьмым по счету.
потом посимвольно копируешь до следующей запятой, strtoint и делай с этой переменной что хочешь!!!
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 14.11.2006, 16:45   #3
Ruffian
 
Регистрация: 14.11.2006
Сообщений: 5
По умолчанию

спасибо за ответ, однако доконца непонимаю как заставить чтоб он считал запятые и после этого переходил на следующую строку?
огромное спасибо за предъидущий ответ!

Последний раз редактировалось Ruffian; 14.11.2006 в 16:53.
Ruffian вне форума Ответить с цитированием
Старый 14.11.2006, 17:27   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

var i,c: integer;
begin
c:=0;
repeat
readln(File,String);
for i:=0 to lenght(string)-1 do // От начала до конца строки
begin
if string[i]=',' then begin // если запятая, то
c:=c+1; //Считаем запятые
if c=x then begin // Если нужная, то производим действия
{Твой код}
Break; // Выходим из оператора for
end;
until EoF(File);
end;
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 14.11.2006 в 17:35. Причина: Добавления
SuperVisor вне форума Ответить с цитированием
Старый 14.11.2006, 19:41   #5
Ruffian
 
Регистрация: 14.11.2006
Сообщений: 5
По умолчанию

ну прост оогромное спасибо!!!ещё последний вопрос, как поцифренно(можно не поцифренно) копировать число куда надо?
Ruffian вне форума Ответить с цитированием
Старый 14.11.2006, 20:00   #6
nova-alex
Пользователь
 
Регистрация: 06.11.2006
Сообщений: 51
По умолчанию

В месте комментария {Твой код} добавь:

if C>1 then
begin
j:=i-1;
str:='';
while string1[j]<>',' do // где string1 твое STRING, просто проверял
//синтаксис в коде
begin
str:=string1[j]+str;
j:=j-1;
end
end
else
begin
str:='';
for j:=i-1 downto 1 do
str:=string1[j]+str
end;
end;
// ну и далее Y:=strtoint(str) или Y:=strtofloat(str);
Если не в курсе strtoint или strtofloat то посмотри их описание в справке Делфи.

Последний раз редактировалось nova-alex; 14.11.2006 в 20:03.
nova-alex вне форума Ответить с цитированием
Старый 14.11.2006, 21:27   #7
Ruffian
 
Регистрация: 14.11.2006
Сообщений: 5
По умолчанию

var
SL: TStrings;
begin
SL := TStringList.Create;
try
SL.LoadFromFile(Edit1.text); // грузим строку из файла
SL.Delimiter := ','; // числа в строке рзделены запятыми
SL.DelimitedText := SL.Text; // разбиваем строку на отдельные числа
SL[5] := IntToStr(StrToInt(Trim(SL[5])) * 60); // работаем с 6-м числом (индексация от 0)
// тут работаем с другими числами
SL.Text := SL.DelimitedText; // чтобы были запятые в результирующем файле
SL.SaveToFile('c:\2.txt'); // сохраняем результат
finally
FreeAndNil(SL);

собсна вот как зделал я, всё работает но получется вот что...вместо того что было, он сохраняет файл с одной длинной строчкой где все числа...
Щас буду пробовать как ты советуешь...
Ruffian вне форума Ответить с цитированием
Старый 14.11.2006, 22:26   #8
Ruffian
 
Регистрация: 14.11.2006
Сообщений: 5
По умолчанию

скомпоновав все коды вот что получил...

procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStrings;
x:integer;
begin
SL := TStringList.Create;
x:=0;
try
while x=0 do
begin
SL.LoadFromFile(Edit1.text); // грузим строку из файла
SL.Delimiter := ','; // числа в строке рзделены запятыми
SL.DelimitedText := SL.Text; // разбиваем строку на отдельные числа
SL[5] := IntToStr(StrToInt(Trim(SL[2])) * 60); // работаем с 6-м числом (индексация от 0)
// тут работаем с другими числами
SL.Text := SL.DelimitedText; // чтобы были запятые в результирующем файле
Readln; // если достигнут конец строки
// в файле, то переход на следующую строку}
SL.SaveToFile('c:\2.txt'); // сохраняем результат
end;
finally
FreeAndNil(SL);
end;
end;


темнеменее выдаёт ошибку, в чём она может быть?
Ruffian вне форума Ответить с цитированием
Старый 15.11.2006, 12:21   #9
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

на какой строке ошибку выдает (или с каким сообщением)?
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 15.11.2006, 16:05   #10
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение !

Код:
Readln;
скорее всего на этой
откуда читаем то ?
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь: выбор файлов исходя из имени файлов Antik163RUS Помощь студентам 4 19.06.2008 21:20
Нужна информация по работе с Firebird в Delphi 7 (желательно через IBX) Krabik БД в Delphi 3 26.05.2008 03:50
срочно нужна помощь, со строками Поскаль Dimon1231 Помощь студентам 10 24.05.2008 22:58
C++ Builder Работа со строками файлов Ya_Nika C++ Builder 2 08.03.2008 02:47
Помощь в работе с MS Excel Noor Microsoft Office Excel 2 12.12.2006 02:13