Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

Обработка текстового файла   Найти похожие ветки 

 
Rustik   (2004-11-12 10:41) [0]

Привт всем!
Есть такая задача:

Есть текстовый файл с данными такого вот содержания:

----------------------------------------------------------------------
A3 CDR = Gateway
----------------------------------------------------------------------
sequenceNumber=2447495
gatewayRecordType=0 (Gate_IN)
dateForStartofCharge=2004-11-11
timeForAnswer=08:51:09
timeForRelease=09:02:16
timeForSeizeChannel=08:50:54
callDuration=00:11:07
callingNumber=1_2_951410000 (NPI_TON_ISDN)
calledNumber=1_0_8346735732 (NPI_TON_ISDN)
mSCIdentification=0_0_436069511009100 (NPI_TON_ISDN)
incomingTKGP=2_2 (Module Number_Trunk Group Number)
outgoingTKGP=2_8 (Module Number_Trunk Group Number)
causeForTermination=3 (Success Call Occure Abnormal Interrupt)
diagnostics=H"07D1
callReference=537799968
chargedParty=0 (Originator Charged)

----------------------------------------------------------------------
A3 CDR = Gateway
----------------------------------------------------------------------
sequenceNumber=2447521
gatewayRecordType=0 (Gate_IN)
dateForStartofCharge=2004-11-11
timeForAnswer=09:02:58
timeForRelease=09:03:05
timeForSeizeChannel=09:02:41
callDuration=00:00:07
callingNumber=1_2_951410000 (NPI_TON_ISDN)
calledNumber=1_0_8314122377 (NPI_TON_ISDN)
mSCIdentification=0_0_436069511009100 (NPI_TON_ISDN)
....... и так далее

мне нужно получить данные из него, тоесть создать таблицу и все что стоит до знака равно ( = ) сделать названием полей, а все что после этого знака сделать данными этих полей, получается что-то типа текстового файла базы данных только таблица перевернута.
Да и заранее предупреждаю файл редактировать не возможно.

Подскажите мне плиз с чего хотябы начинать или кто-нибудь уже пробовал это проделать?

Заранее благодарен


 
Anatoly Podgoretsky ©   (2004-11-12 10:44) [1]

Начать с понимания текстовые файлы Паскаля, начальную информацию можешь найти здесь http:\\podgoretsky.com\ddp.html


 
Igorok   (2004-11-12 10:47) [2]

переберай по строчно и используй функции Pos(), Copy(), Length()


 
PVOzerski ©   (2004-11-12 11:09) [3]

TInifile не пробовал? Только секции в файл добавь - и может получиться... Конечно, если файл не слишком большой.


 
Rustik   (2004-11-12 11:21) [4]

В том то и дело файл может быть размером то 50 мегов, во вторых файл редактировать нельзя.

Да у меня получилось скопировать данные после знака равно при помощи
SelStart
SelLength
но вот опять проблема, длинна значения может быть разной, тоесть SelLengh здесь не поможет.

Как быть?


 
Amoeba ©   (2004-11-12 11:25) [5]


> Да у меня получилось скопировать данные после знака равно
> при помощи
> SelStart
> SelLength
> но вот опять проблема, длинна значения может быть разной,
> тоесть SelLengh здесь не поможет.

Все это было бы смешно, когда бы не было так грустно.


 
Rustik   (2004-11-12 11:34) [6]


> Amoeba ©   (12.11.04 11:25) [5]

Кандидат биологических наук, с.н.с. Зоологического ин-та РАН. Исследование зоопланктона континентальных соленых водоемов, в первую очередт Аральского моря.</B>

Вроде такой большой мальчик, а до сих пор как ребенок, у самого дети есть скорее всего да и внуки наверное... а все в салочки да в салочи

Забыл сказать что файл предварительно в Tmemo загрузил. Вот там у меня это и получилось


 
Amoeba ©   (2004-11-12 11:37) [7]


> файл предварительно в Tmemo загрузил

Зачем решать задачу через одно известное место?
LOL!


 
PVOzerski ©   (2004-11-12 11:41) [8]

Ребята, да хватит вам... Ну уйдет ветка в "Потрепаться" или вообще в никуда - лучше будет? А по сабжу... Можно бы всё в StringList загрузить, а потом по знаку равенства делить (через Pos). Правда, файл большой. Можно по readln читать строки и так же обрабатывать - но это медленно, если строк много. Идеально - через буферизацию.


 
Romkin ©   (2004-11-12 11:51) [9]

PVOzerski ©  (12.11.04 11:41) [8] Еще один. TStrings.Names and Values, Эт во-первых. Во-вторых, файл действительно великоват, надо просто читать по секциям в TStringList скорее всего... Так и проще, и удобственнее :)


 
Rustik   (2004-11-12 11:52) [10]

Ладно не будем друг в друга камни кидать, пошутил дяденька разрядился и хватит...

Нашел я способ полегче.
Буду удалять все значения до знака равно динамически, благо дело у них длинна постоянная, и останеться у меня только то что мне нужно. Вот то что мне нужно я и заберу от туда.


> PVOzerski ©   (12.11.04 11:41) [8]

Огромное спасибо за помощь.


> Amoeba ©   (12.11.04 11:37) [7]

И вам удачи...


 
Vitalik ©   (2004-11-12 14:09) [11]

Есть ещё один вариент, основаный на использовании технологии Jet.
Кладём ваш текстовый файл (пусть будет "text.txt") в какую-нибудь папку, например c:\111.
В общем, кладём на форму ADOConnection, строим строку соединения. На вкладке Provider выбираем Microsoft Jet x.x OLE DB Provider. На вкладке Connection указываем путь к папке - c:\111
На вкладке All в строке Extended Properties вводим "Text"
Тестируем связь - всё нормально (должно быть :)

В этой папке создаём файл schema.ini со следующим содержанием:
[text.txt] <- это имя файла, в котором сохранены ваши данные
Format=Delimited(=)

Потом кидаем ADODataSet на форму, выбираем созданный ADOConnector. У DataSet устанавливаем свойство CommandType в cmdTableDirect, в CommandText выбираем text#txt

Далее грид добавляем...
Чего добились? Ну что у вас в одном столбце содержатся наименования колонок, а в другом - значения. Конечно не то, что вы изначально хотели, но, как говорится, чем богат :)



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

Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
4-1097966900
mariner
2004-10-17 02:48
2004.11.28
Как открыть файл моим прилож.


14-1100193890
Vasyta_d_po_r
2004-11-11 20:24
2004.11.28
Подскажите название счетчика...


1-1100201651
iMax
2004-11-11 22:34
2004.11.28
Вопрос по работе TWebBrowser


1-1100256613
qp
2004-11-12 13:50
2004.11.28
Освобождение памяти


1-1100667952
Maxim2030
2004-11-17 08:05
2004.11.28
стандарты кодирования на Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский