Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами(чтение) 
V
    Опции темы
DenisTv
Дата 21.12.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 3.11.2005

Репутация: нет
Всего: нет



Доброго времени суток!
Помогите пожалуйста в решении следующей задачи:
Мне нужно в текстовом файле найти некоторое слово(ключ), затем считать его значение, следующее на ним.
Причем количество знаков значения неизвестено(вещественный тип).
Заранее спасибо! 
PM MAIL ICQ   Вверх
Poseidon
Дата 22.12.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(DenisTv @  21.12.2007,  19:30 Найти цитируемый пост)
Мне нужно в текстовом файле найти некоторое слово(ключ)

pos('слово')

Цитата(DenisTv @  21.12.2007,  19:30 Найти цитируемый пост)
затем считать его значение, следующее на ним.Причем количество знаков значения неизвестено(вещественный тип).
Зато известно общее число знаков: Length, позиция начала ключа (опясано выше) и длина ключа. Так что поличество знаков после ключа вычесляется математически. В общем виде что-то вроди такого будет:

Код
function GetTxt(fl, key: string): string;
var
f: TStringList;
p: integer;
begin
f:= TStringList.Create;
f.LoadFromFile(fl);
p:= pos(key, f.Text);
Result:= copy(f.Text, p+Length(key), Length(f.Text)-Length(key)-p+1);
f.Free
end;



Это сообщение отредактировал(а) Poseidon - 22.12.2007, 14:55


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Letov
Дата 29.12.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 22.2.2007
Где: Санкт-Петербург

Репутация: нет
Всего: 4



А какой символ является разделителем пар параметр-значение?
Вот, посмотри, может поможет) http://forum.vingrad.ru/forum/topic-189408...роек-файла.html


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
DenisTv
Дата 16.1.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 3.11.2005

Репутация: нет
Всего: нет



Благодарю за ответы)
Уточню,  там файл набит всяким хламом. Ключ - Значение разделяются ","(запятой).

И ещё, там в файле куча этих ключей, есть ли возможность их поочерёдного выдёргивания или 
только удалением уже найденого? 

Файл такого вида(вдруг поможет, выдергиваем значение ключа SDDPT):
Код

2: GPGLL,6318.5765,N,08731.9688,E,052858.00,A,A*64
3: GPGSV,3,1,11,01,30,130,50,02,14,352,44,04,17,315,41,06,24,067,44*7C
4: SDDPT,0007.9,0000.0*59
5: PFEC,Alarm,0,0*6F
6: PFEC,xdr,FORE,200*7E
7: GPGSV,3,2,11,07,24,074,46,13,26,292,46,16,41,163,49,20,39,226,49*7D
8: GPGSV,3,3,11,23,53,278,52,30,11,040,43,31,54,091,53*49
9: GPHDT,113.7,T*31
10: GPVTG,115.2,T,,M,004.7,N,008.6,K,A*07
11: GPZDA,052858.00,16,08,2007,,*6E


Это сообщение отредактировал(а) DenisTv - 16.1.2008, 19:14
PM MAIL ICQ   Вверх
Akella
  Дата 17.1.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата(DenisTv @  16.1.2008,  19:13 Найти цитируемый пост)
И ещё, там в файле куча этих ключей, есть ли возможность их поочерёдного выдёргивания 

есть, щас дам

Добавлено @ 11:08
Код

Var
  sl, sl1:TStringList;
  i, k:integer;
begin
 

  sl:TStringList.create;
  sl1:TStringList.create;
  try
    sl.loadfromfile(загружаем файл полностью);
    for i := 0 to sl.count do begin
      sl1.text := StringReplase(sl.text, ',', #13, []);//загружаем строки файла поочереди - запятую меняем на перенос строки
      for k := sl1.count -1 do
        ShowMessage(sl1[k]);//показываем все значения ключей поочереди, но первым будет идти сам ключ

    end;//for

  

  finally
    FreeAndNil(sl);
    FreeAndNil(sl1);
  end;


писал на вскидку, так что если будут ошибки, звыняй smile 

Это сообщение отредактировал(а) Akella - 17.1.2008, 11:21
PM MAIL   Вверх
DenisTv
Дата 20.1.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 3.11.2005

Репутация: нет
Всего: нет



Синтезировав все ответы, получил что хотел.   smile 

Всем большое спасибо за помощь  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.