Считать строку больше чем 250

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
shako
Новичок
Сообщения: 8
Зарегистрирован: 30 Сентябрь 2010, 9:10

Считать строку больше чем 250

Сообщение shako »

Clarion 6.3
Подскажите чайнику как считать из файла данные, которые лежат за пределами описанного типа. Есть DAT-файл, в котором описано поле ТАТ:ТХТ (String 250), в файле уже есть информация. Нужно считать данные, которые лежат за пределами 250 символов. Реально там строка больше чем 250 и нужная информация часто находится за пределами 250. Как не меняя структуру файла считать эту информацию??? Файл очень большого объема, который стремится к 2гигам.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Считать строку больше чем 250

Сообщение Yufil »

Воспользоваться 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)
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Считать строку больше чем 250

Сообщение Алексей- Софт-Центр »

Добрый день!
Есть DAT-файл, в котором описано поле ТАТ:ТХТ (String 250)
Файл текстовый или DAT (Clarion 2.0)?
Или вообще другого формата?


Алексей
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Считать строку больше чем 250

Сообщение lsgsoftware »

Немного странный вопрос.Если файл кларионовский формата DAT,
то там не может быть строки более 255 байт в принципе.
А если файл текстовый,то нужно объявить его как STREAM,а далее
просто парсинг.Много лет назад у меня была проблема переконвертировать
в клашин DAT большое количество файлов DBF.Там в записях было много разных
полей,а общая длина записи была ну очень большой.Так вот я переобъявлял
DBF-файлы в текстовые модели STREAM(это вообще без записей-сплошной поток
этих байтов).Все вроде получилось нормально.
shako
Новичок
Сообщения: 8
Зарегистрирован: 30 Сентябрь 2010, 9:10

Re: Считать строку больше чем 250

Сообщение shako »

Файл именно DAT - Clarion2. Я тоже думала, что при таком описании как строка 250 символов, там не может быть больше. Но на деле больше. Как туда пишут эти строки не знаю. А мне надо вытащить хвостик. Если считывать как текстовый, так это убиться можно - искать нужную информацию в таком огромном файле. Я же писала, что он к 2 гигам приближается. Или думаете быстро в потоке пропустит? Все-таки в DAT-файле по ключу мгновенно к записи переходит. Меня интересует нет ли механизмов обойти описание и таки считать больше.
Сейчас занимаюсь другими вопросами, еще не пробовала описанные выше советы.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Считать строку больше чем 250

Сообщение Andrew™ »

shako писал(а):Файл именно DAT - Clarion2. Я тоже думала, что при таком описании как строка 250 символов, там не может быть больше. Но на деле больше. Как туда пишут эти строки не знаю. А мне надо вытащить хвостик. Если считывать как текстовый, так это убиться можно - искать нужную информацию в таком огромном файле. Я же писала, что он к 2 гигам приближается. Или думаете быстро в потоке пропустит? Все-таки в DAT-файле по ключу мгновенно к записи переходит. Меня интересует нет ли механизмов обойти описание и таки считать больше.
Сейчас занимаюсь другими вопросами, еще не пробовала описанные выше советы.

не могет быть такого, что описание DAT файла одно, а в данных косяк, структура DAT файлов фиксированная, попробуй симпортировать описание данного файла в DCT и глянь что получится. Если есть Clarion Windows прога, которая работает с этим файлом, включи трассировку Clarion драйвера (TRACE.EXE) и запусти эту прогу, в трассе будет видно какая структура этого "волшебного" файла.
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Считать строку больше чем 250

Сообщение lsgsoftware »

Понимаешь,если есть файл с расширением DAT,то это еще
не факт,что это именно кларионовский файл.Попадались мне такие.
А ведь структура кларионовского DAT известна.Описание структуры
есть на FTP.Почитай файл на "физическом" уровне и убедись,что это
именно кларион, а не что-то другое.
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Считать строку больше чем 250

Сообщение Алексей- Софт-Центр »

Проще , как уже предлагалось, закачать его в словарь (dic)
Если закачается - значит clarion, если нет - значит какой-то другой драйвер.
Файл именно DAT - Clarion2. Я тоже думала, что при таком описании как строка 250 символов, там не может быть больше. Но на деле больше. Как туда пишут эти строки не знаю. А мне надо вытащить хвостик.
Заодно и проверит это утверждение: не может словарь иметь поле длинной 250, а физически в файле больше. Обращение к такому файлу приведет к ошибке несоответствия в кларионе.
Алексей
Ал
✯ Ветеран ✯
Сообщения: 1014
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Re: Считать строку больше чем 250

Сообщение Ал »

Может все же memo поле?
"Clarion драйвер сохраняет записи как записи фиксированной длины. МЕМО поля хранятся в отдельном файле. По умолчанию имя файла мемо – первые восемь символов метки файла и расширение .MEM. Полей мемо на файл: 1, размер поля мемо: 65,520 байт"
shako
Новичок
Сообщения: 8
Зарегистрирован: 30 Сентябрь 2010, 9:10

Re: Считать строку больше чем 250

Сообщение shako »

Файл давно загружен в словарь и именно там он и описан с таким полем. Моя программа уж давно написана и работает. Просто нужна еще важная информация, которую ну никак не знаю как вытащить. Вообще этот файл используется в Досовой кларионовской программе, которая как-то читает ту самую информацию, до которой мне не добраться. Я пишу на Кларионе6 и там у меня есть некоторые проблемы с этим загадошным файлом. Первая проблема - это поле ТХТ описанное длиной 250, а там больше. Вторая проблема - это его размер. Как только размер этого файла вышел за 2гига, поиск по ключу перестал работать. Так-то, а пишут, что до 4гигов. Врут все. Даже досовый кларион без проблем переходит и находит записи по ключу в файле больше 2 гигов. Ведь запихали же туда как-то эту строку в досовом кларионе. Может на Досовый Кларион вернуться... :lol:
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Считать строку больше чем 250

Сообщение lsgsoftware »

А ситуация действительно интересная.Да,длинные строки это похоже на поле MEMO.
Если все сделано в лоб,то MEMO-поля хранятся в отдельном файле,который виден.
Грешен,в досовском кларионе я с полями MEMO и не работал.Но к примеру с моделью
TPS можно все файлы-таблицы загнать просто в один файл.А в этих файлах могут жить
поля типа и MEMO и BLOB,а внешне это только один файл.Если есть желание,можете посмотреть
мою некую хилую прогу здесь(там это реализовано):
http://lsgsoftware.narod.ru/buxdom.html
Далее, возьмем нашу "любимую" подружку 1С.До седьмой версии она была сделана
на базе DBF с кучей файлов.А в 8-ой версии уже все закатали в один файл,структура
которого не разглашается.Спецы из 1С мне говорили,что это коммерческая тайна,а уж
если очень хочется поработать в таким файлом напрямую, то делай нам заказ и
наши программисты за нехилые бабки тебе все и сделают.
Так что возможно некий клашин спец и умудрился как-то загнать длинные строки
в модель DAT.
Ну а теперь совет.Если в клашином ДОС все читается,то попробуй просто перегнать
этот файл в модель TPS. Но в С210 это не пройдет.Нужно брать третью версию
досовской клаши, а прога по перекачке это копеечная работа на несколько минут.
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Считать строку больше чем 250

Сообщение Admin »

shako писал(а):Файл давно загружен в словарь и именно там он и описан с таким полем. Моя программа уж давно написана и работает. Просто нужна еще важная информация, которую ну никак не знаю как вытащить.
А зазиповать и выложить куда нибудь можно файл, или это секретная информация?
Было бы интересно посмотреть на этот странный файл.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: Считать строку больше чем 250

Сообщение WadimZapara »

Действительно, очень интересно.
Ну не весь файл, а выжимку из нескольких записей, сделанную в досовом кларионе...

А может там структура создана типа:

Код: Выделить всё

xFile FILE
RECORD  RECORD
xField         BYTE,DIM(1024)
xStr           STRING(250),OVER(xField)
...
        END
      END
а потом как-то
xField BYTE,DIM(1024)
потерялось ?
Компьютер имеет то преимущество перед мозгом, что им пользуются...
shako
Новичок
Сообщения: 8
Зарегистрирован: 30 Сентябрь 2010, 9:10

Re: Считать строку больше чем 250

Сообщение shako »

Проблема разрешилась сама собой. Из-за большого размера исходного файла, его разбили на 2 файла и теперь гарантированно все обрезано по 250. Может и зря я всех ввела в заблуждение. Может и не было там никогда больше 250 изначально. Но я видела входные файлы, которые перегонялись в этот и там, в исходных эта строка была больше 250!!! В этой строке столько полезной информации остается за бортом, что я в душе не верила, что так можно обрезать. Видимо разработчики, решили, что хватит 250 и все тут. Что же я могу поделать. К сожалению, исходные файлы удаляются, а мне для работы остается только "слегка" урезанный вариант. Выше головы не прыгнешь.

Всем спасибо за участие в моей проблеме.
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Считать строку больше чем 250

Сообщение Admin »

shako писал(а):К сожалению, исходные файлы удаляются
А что за данные, невозможно все их заново собрать и залить в файл с новой структурой?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить