|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2006, 16:13 | #1 |
Регистрация: 14.11.2006
Сообщений: 5
|
нужна помощь по работе с строками файлов...
Привет всем! У меня такая проблема, вернее задача...
Как написать программу для отрытия файла, поиски строки в нём, редоктирования, и закрывания с сейвом результатов я знаю...)))) А передо мной сейчас стоит задача о поиске n-ого по счёту числа в строчке и изменения его (умножения на 60) после чего необходимо перейти к следующей строчке...и зделать тоже самое...Прошу помочь как можно быстрее...(напишите всё плиз поподробнее, а то я ещё совсем зелёный програмист)))) Заранее спасибо. ЗЫ все числа в файле стоят через запятую... |
14.11.2006, 16:27 | #2 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
Все очень просто от for i:=0 to lenght(string)-1 выполняешь поиск запятых:
Нашел одну, значит следующее число - второе в строке, нашел шестую - следующее число будет седьмым по счету. потом посимвольно копируешь до следующей запятой, strtoint и делай с этой переменной что хочешь!!!
Познавая других, мы познаем себя.
С'est la vie... |
14.11.2006, 16:45 | #3 |
Регистрация: 14.11.2006
Сообщений: 5
|
спасибо за ответ, однако доконца непонимаю как заставить чтоб он считал запятые и после этого переходил на следующую строку?
огромное спасибо за предъидущий ответ! Последний раз редактировалось Ruffian; 14.11.2006 в 16:53. |
14.11.2006, 17:27 | #4 |
Павел Сергеевич
Форумчанин
Регистрация: 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. Причина: Добавления |
14.11.2006, 19:41 | #5 |
Регистрация: 14.11.2006
Сообщений: 5
|
ну прост оогромное спасибо!!!ещё последний вопрос, как поцифренно(можно не поцифренно) копировать число куда надо?
|
14.11.2006, 20:00 | #6 |
Пользователь
Регистрация: 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. |
14.11.2006, 21:27 | #7 |
Регистрация: 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); собсна вот как зделал я, всё работает но получется вот что...вместо того что было, он сохраняет файл с одной длинной строчкой где все числа... Щас буду пробовать как ты советуешь... |
14.11.2006, 22:26 | #8 |
Регистрация: 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; темнеменее выдаёт ошибку, в чём она может быть? |
15.11.2006, 12:21 | #9 |
Павел Сергеевич
Форумчанин
Регистрация: 05.11.2006
Сообщений: 665
|
на какой строке ошибку выдает (или с каким сообщением)?
Познавая других, мы познаем себя.
С'est la vie... |
15.11.2006, 16:05 | #10 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
!
Код:
откуда читаем то ?
Берегите друг друга!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужна помощь: выбор файлов исходя из имени файлов | 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 |