Считать строку больше чем 250
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Считать строку больше чем 250
Clarion 6.3
Подскажите чайнику как считать из файла данные, которые лежат за пределами описанного типа. Есть DAT-файл, в котором описано поле ТАТ:ТХТ (String 250), в файле уже есть информация. Нужно считать данные, которые лежат за пределами 250 символов. Реально там строка больше чем 250 и нужная информация часто находится за пределами 250. Как не меняя структуру файла считать эту информацию??? Файл очень большого объема, который стремится к 2гигам.
Подскажите чайнику как считать из файла данные, которые лежат за пределами описанного типа. Есть DAT-файл, в котором описано поле ТАТ:ТХТ (String 250), в файле уже есть информация. Нужно считать данные, которые лежат за пределами 250 символов. Реально там строка больше чем 250 и нужная информация часто находится за пределами 250. Как не меняя структуру файла считать эту информацию??? Файл очень большого объема, который стремится к 2гигам.
Re: Считать строку больше чем 250
Воспользоваться WipAPI или С-шными процедурами
Map
Module('Windows API')
Memmove(Ulong Dest,Ulong Src,Ulong Size),Name('_memmove')
End
....
Mystring String(1000)
....
MemMove(Address(MyString),Address(Txa:Text),1000)
Map
Module('Windows API')
Memmove(Ulong Dest,Ulong Src,Ulong Size),Name('_memmove')
End
....
Mystring String(1000)
....
MemMove(Address(MyString),Address(Txa:Text),1000)
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Считать строку больше чем 250
Добрый день!
Или вообще другого формата?
Алексей
Файл текстовый или DAT (Clarion 2.0)?Есть DAT-файл, в котором описано поле ТАТ:ТХТ (String 250)
Или вообще другого формата?
Алексей
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04
Re: Считать строку больше чем 250
Немного странный вопрос.Если файл кларионовский формата DAT,
то там не может быть строки более 255 байт в принципе.
А если файл текстовый,то нужно объявить его как STREAM,а далее
просто парсинг.Много лет назад у меня была проблема переконвертировать
в клашин DAT большое количество файлов DBF.Там в записях было много разных
полей,а общая длина записи была ну очень большой.Так вот я переобъявлял
DBF-файлы в текстовые модели STREAM(это вообще без записей-сплошной поток
этих байтов).Все вроде получилось нормально.
то там не может быть строки более 255 байт в принципе.
А если файл текстовый,то нужно объявить его как STREAM,а далее
просто парсинг.Много лет назад у меня была проблема переконвертировать
в клашин DAT большое количество файлов DBF.Там в записях было много разных
полей,а общая длина записи была ну очень большой.Так вот я переобъявлял
DBF-файлы в текстовые модели STREAM(это вообще без записей-сплошной поток
этих байтов).Все вроде получилось нормально.
Re: Считать строку больше чем 250
Файл именно DAT - Clarion2. Я тоже думала, что при таком описании как строка 250 символов, там не может быть больше. Но на деле больше. Как туда пишут эти строки не знаю. А мне надо вытащить хвостик. Если считывать как текстовый, так это убиться можно - искать нужную информацию в таком огромном файле. Я же писала, что он к 2 гигам приближается. Или думаете быстро в потоке пропустит? Все-таки в DAT-файле по ключу мгновенно к записи переходит. Меня интересует нет ли механизмов обойти описание и таки считать больше.
Сейчас занимаюсь другими вопросами, еще не пробовала описанные выше советы.
Сейчас занимаюсь другими вопросами, еще не пробовала описанные выше советы.
Re: Считать строку больше чем 250
shako писал(а):Файл именно DAT - Clarion2. Я тоже думала, что при таком описании как строка 250 символов, там не может быть больше. Но на деле больше. Как туда пишут эти строки не знаю. А мне надо вытащить хвостик. Если считывать как текстовый, так это убиться можно - искать нужную информацию в таком огромном файле. Я же писала, что он к 2 гигам приближается. Или думаете быстро в потоке пропустит? Все-таки в DAT-файле по ключу мгновенно к записи переходит. Меня интересует нет ли механизмов обойти описание и таки считать больше.
Сейчас занимаюсь другими вопросами, еще не пробовала описанные выше советы.
не могет быть такого, что описание DAT файла одно, а в данных косяк, структура DAT файлов фиксированная, попробуй симпортировать описание данного файла в DCT и глянь что получится. Если есть Clarion Windows прога, которая работает с этим файлом, включи трассировку Clarion драйвера (TRACE.EXE) и запусти эту прогу, в трассе будет видно какая структура этого "волшебного" файла.
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04
Re: Считать строку больше чем 250
Понимаешь,если есть файл с расширением DAT,то это еще
не факт,что это именно кларионовский файл.Попадались мне такие.
А ведь структура кларионовского DAT известна.Описание структуры
есть на FTP.Почитай файл на "физическом" уровне и убедись,что это
именно кларион, а не что-то другое.
не факт,что это именно кларионовский файл.Попадались мне такие.
А ведь структура кларионовского DAT известна.Описание структуры
есть на FTP.Почитай файл на "физическом" уровне и убедись,что это
именно кларион, а не что-то другое.
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Считать строку больше чем 250
Проще , как уже предлагалось, закачать его в словарь (dic)
Если закачается - значит clarion, если нет - значит какой-то другой драйвер.
Алексей
Если закачается - значит clarion, если нет - значит какой-то другой драйвер.
Заодно и проверит это утверждение: не может словарь иметь поле длинной 250, а физически в файле больше. Обращение к такому файлу приведет к ошибке несоответствия в кларионе.Файл именно DAT - Clarion2. Я тоже думала, что при таком описании как строка 250 символов, там не может быть больше. Но на деле больше. Как туда пишут эти строки не знаю. А мне надо вытащить хвостик.
Алексей
-
- ✯ Ветеран ✯
- Сообщения: 1018
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Re: Считать строку больше чем 250
Может все же memo поле?
"Clarion драйвер сохраняет записи как записи фиксированной длины. МЕМО поля хранятся в отдельном файле. По умолчанию имя файла мемо – первые восемь символов метки файла и расширение .MEM. Полей мемо на файл: 1, размер поля мемо: 65,520 байт"
"Clarion драйвер сохраняет записи как записи фиксированной длины. МЕМО поля хранятся в отдельном файле. По умолчанию имя файла мемо – первые восемь символов метки файла и расширение .MEM. Полей мемо на файл: 1, размер поля мемо: 65,520 байт"
Re: Считать строку больше чем 250
Файл давно загружен в словарь и именно там он и описан с таким полем. Моя программа уж давно написана и работает. Просто нужна еще важная информация, которую ну никак не знаю как вытащить. Вообще этот файл используется в Досовой кларионовской программе, которая как-то читает ту самую информацию, до которой мне не добраться. Я пишу на Кларионе6 и там у меня есть некоторые проблемы с этим загадошным файлом. Первая проблема - это поле ТХТ описанное длиной 250, а там больше. Вторая проблема - это его размер. Как только размер этого файла вышел за 2гига, поиск по ключу перестал работать. Так-то, а пишут, что до 4гигов. Врут все. Даже досовый кларион без проблем переходит и находит записи по ключу в файле больше 2 гигов. Ведь запихали же туда как-то эту строку в досовом кларионе. Может на Досовый Кларион вернуться...
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04
Re: Считать строку больше чем 250
А ситуация действительно интересная.Да,длинные строки это похоже на поле MEMO.
Если все сделано в лоб,то MEMO-поля хранятся в отдельном файле,который виден.
Грешен,в досовском кларионе я с полями MEMO и не работал.Но к примеру с моделью
TPS можно все файлы-таблицы загнать просто в один файл.А в этих файлах могут жить
поля типа и MEMO и BLOB,а внешне это только один файл.Если есть желание,можете посмотреть
мою некую хилую прогу здесь(там это реализовано):
http://lsgsoftware.narod.ru/buxdom.html
Далее, возьмем нашу "любимую" подружку 1С.До седьмой версии она была сделана
на базе DBF с кучей файлов.А в 8-ой версии уже все закатали в один файл,структура
которого не разглашается.Спецы из 1С мне говорили,что это коммерческая тайна,а уж
если очень хочется поработать в таким файлом напрямую, то делай нам заказ и
наши программисты за нехилые бабки тебе все и сделают.
Так что возможно некий клашин спец и умудрился как-то загнать длинные строки
в модель DAT.
Ну а теперь совет.Если в клашином ДОС все читается,то попробуй просто перегнать
этот файл в модель TPS. Но в С210 это не пройдет.Нужно брать третью версию
досовской клаши, а прога по перекачке это копеечная работа на несколько минут.
Если все сделано в лоб,то MEMO-поля хранятся в отдельном файле,который виден.
Грешен,в досовском кларионе я с полями MEMO и не работал.Но к примеру с моделью
TPS можно все файлы-таблицы загнать просто в один файл.А в этих файлах могут жить
поля типа и MEMO и BLOB,а внешне это только один файл.Если есть желание,можете посмотреть
мою некую хилую прогу здесь(там это реализовано):
http://lsgsoftware.narod.ru/buxdom.html
Далее, возьмем нашу "любимую" подружку 1С.До седьмой версии она была сделана
на базе DBF с кучей файлов.А в 8-ой версии уже все закатали в один файл,структура
которого не разглашается.Спецы из 1С мне говорили,что это коммерческая тайна,а уж
если очень хочется поработать в таким файлом напрямую, то делай нам заказ и
наши программисты за нехилые бабки тебе все и сделают.
Так что возможно некий клашин спец и умудрился как-то загнать длинные строки
в модель DAT.
Ну а теперь совет.Если в клашином ДОС все читается,то попробуй просто перегнать
этот файл в модель TPS. Но в С210 это не пройдет.Нужно брать третью версию
досовской клаши, а прога по перекачке это копеечная работа на несколько минут.
- Admin
- Администратор
- Сообщения: 3996
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 46 раз
- Поблагодарили: 26 раз
- Контактная информация:
Re: Считать строку больше чем 250
А зазиповать и выложить куда нибудь можно файл, или это секретная информация?shako писал(а):Файл давно загружен в словарь и именно там он и описан с таким полем. Моя программа уж давно написана и работает. Просто нужна еще важная информация, которую ну никак не знаю как вытащить.
Было бы интересно посмотреть на этот странный файл.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: Считать строку больше чем 250
Действительно, очень интересно.
Ну не весь файл, а выжимку из нескольких записей, сделанную в досовом кларионе...
А может там структура создана типа:
а потом как-то
xField BYTE,DIM(1024)
потерялось ?
Ну не весь файл, а выжимку из нескольких записей, сделанную в досовом кларионе...
А может там структура создана типа:
Код: Выделить всё
xFile FILE
RECORD RECORD
xField BYTE,DIM(1024)
xStr STRING(250),OVER(xField)
...
END
END
xField BYTE,DIM(1024)
потерялось ?
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Re: Считать строку больше чем 250
Проблема разрешилась сама собой. Из-за большого размера исходного файла, его разбили на 2 файла и теперь гарантированно все обрезано по 250. Может и зря я всех ввела в заблуждение. Может и не было там никогда больше 250 изначально. Но я видела входные файлы, которые перегонялись в этот и там, в исходных эта строка была больше 250!!! В этой строке столько полезной информации остается за бортом, что я в душе не верила, что так можно обрезать. Видимо разработчики, решили, что хватит 250 и все тут. Что же я могу поделать. К сожалению, исходные файлы удаляются, а мне для работы остается только "слегка" урезанный вариант. Выше головы не прыгнешь.
Всем спасибо за участие в моей проблеме.
Всем спасибо за участие в моей проблеме.
- Admin
- Администратор
- Сообщения: 3996
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 46 раз
- Поблагодарили: 26 раз
- Контактная информация:
Re: Считать строку больше чем 250
А что за данные, невозможно все их заново собрать и залить в файл с новой структурой?shako писал(а):К сожалению, исходные файлы удаляются
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса