Форум: "Основная";
Текущий архив: 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.029 c