Ничего не понимаю!

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Ничего не понимаю!

Сообщение vic7tar »

Алексей- Софт-Центр писал(а): 04 Сентябрь 2019, 11:56Read_B_File - процедура, устанавливающая SET-ом В-файл (около 100 000 записей) и Next-ом читающая всегда 4 (Это я знаю) записи.
Типа:
Set(...)
loop
next(b)
if error() then break.
if условие then break.
....
end
. . .
Для меня это откровение, что GET-ы , читающие 4-е последовательные записи работают быстрее, чем последовательное чтение NEXT-ом!
А ещё, уточните, как из представленного кода видно, что next-ом читается 4 записи именно последовательно (намёк на 2-й if)?
Я так думаю, что считать последовательно 4 записи выглядит примерно так:

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

Loop 4 Times
     next(b)
end
Или я что-то недопонимаю?
C10, Win10x64
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Ничего не понимаю!

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

Добрый день!
Всем спасибо за участие!
Нашел проблему, хорошо , что так относительно быстро. Мог бы искать значительно дольше...(((
Сразу напишу - мой косяк.
Оба варианта, с next и get работают одинаково!!! (в данном случае)
В чем была проблема:
Процедура "В", работающая с NEXT-ом файла В, имела различную реакцию на проверку отбора записи после next-a: либо Break, либо Cycle,
в зависимости от некоего параметра Х.
Параметр Х задавался в вызывающей процедуре. В моем случае, он, например Х=1, ЯВНО устанавливал break. И я это визуально видел в тексте.
А на самом деле !!!! он неявно "портился" и обнулившись - устанавливал Cycle, что, естественно, пробегало до конца файла, со всеми вытекающими последствиями.
А почему мог искать долго, потому что портился этот параметр (Х) совсем в другом месте, где я использовал IP-функцию чтения файла, указав "буфер" сstring(31), а читал 32 байта. Вот этот лишний байтик и накрывал мою переменную Х.

Алексей
Аватара пользователя
porutchik
Активист
Сообщения: 150
Зарегистрирован: 01 Февраль 2009, 5:35

Ничего не понимаю!

Сообщение porutchik »

как и в вопросе так и в последнем посте мало, что можно разобрать - "смешались в кучу кони, люди". Потом удивляемся: почему не работает?
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Ничего не понимаю!

Сообщение kreator »

porutchik писал(а): 10 Сентябрь 2019, 0:04 как и в вопросе так и в последнем посте мало, что можно разобрать - "смешались в кучу кони, люди".
Я понял. Даже скуль посоветовать не удасться. Там тоже так можно влететь. :D
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Ничего не понимаю!

Сообщение Yufil »

Но отладчик и трассировку драйвера можно посмотреть, там сразу становится ясно, что БД вроде как ни при чём.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Ничего не понимаю!

Сообщение Дед Пахом »

Алексей- Софт-Центр писал(а): 09 Сентябрь 2019, 15:03Сразу напишу - мой косяк.
Чёрт, проиграл пари самому себе - думал, что этот комментарий появится на 4-й или 5-й странице :D
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Ничего не понимаю!

Сообщение RaFaeL »

Алексей- Софт-Центр писал(а): 09 Сентябрь 2019, 15:03А почему мог искать долго, потому что портился этот параметр (Х) совсем в другом месте, где я использовал IP-функцию чтения файла, указав "буфер" сstring(31), а читал 32 байта. Вот этот лишний байтик и накрывал мою переменную Х.
На всякий случай - лишних байтов два
Ответить