ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
ADIR, поиск по маске. Странно фокс интерпретирует символ "?":
В интернетах типа В MS про FindFirstFile пишут ... ничего не пишут (The file name can include wildcard characters, for example, an asterisk (*) or a question mark (?).) Предположение, что "имя файла внутри ОС дополнено пробелами" показало:
Кому верить, и что делать? |
Re: ADIR, глюк с маской "?" | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это так и задумано. Обычная команда dir следует тем же правилам.
Фоксовый LIKE тут вообще не при делах - он не имена объектов файловой системы "сравнивает". ss64.com Возможно тут более красиво описано то же самое www.dostips.com Не совсем очевиден и момент с именами 8.3 - т.к. dir (и фоксовый ADIR и АПИ FindFirstFile - это суть одно и то же) проверяет ОБА имени (если на томе не запрещены 8.3 имена, конечно)
P.S. Для совсем плохо понимающих буржуйску мову. "Вопросик" может соответствовать "нулю символов" только если эти "ноль символов" будут в конце имени, либо перед точкой. Т.е. в точности твой случай. Ну и "win?.ini?" тоже "сработает". ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 12.03.18 18:11 |
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Из первой ссылки понятно и на мове ("on the move" по-буржуйски). Непонятно к чему она относится, к ОСи вобщем. Вторую ссылку вообще не осилил, слишком красивая, наверное )
Wildcards The * wildcard will match any sequence of characters (0 or more, including NULL characters) The ? wildcard will match a single character (or a NULL at the end of a filename) PS. Игорь, не сомневался, что интернет ты знаешь наизусть. Как нам его отключат, то надежда только на тебя! |
Re: ADIR, глюк с маской "?" | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет, я просто умею в нём искать нужное. Честно говоря до твоего вопроса даже не задумывался о таких штуках, и не знал что оно так хитрО работает
Хотя гугл и Ко с каждым днём делает это занятие всё более и более сложным Слишком много "мусора" и пропихивания наверх туфты вместо реально полезных сайтов... По 2 ссылке 9-е сообщение (синим выделен заголовок) - вроде как внятно описаны "все правила в окончательном виде". ------------------ WBR, Igor |
о %1=0 EMPTY и ROUND | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Навеяло соседним постом от Simple777 о глюках APPEND FROM. О глюках:
Исправлено 1 раз(а). Последнее : of63, 23.05.18 10:00 |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вообще таких глюков немеряно.
Вот вчера, например. Делаю APPEND BLANK в свободной таблице и заполняю часть полей по команде REPLACE. Потом переключаюсь в другую рабочую область и там делаю перемещения по таблице. С исходной таблицей связей нет. Считываю значение поля в переменную, возвращаюсь в исходную таблицу и выполняю REPLACE для одного поля (занести значение из переменной). Не заносится. Оказывается, указатель стоит на EOF(). Пришлось перед REPLACE выполнить команду GO BOTTOM. Спрашивается - почему так? Это было в FPD 2.6 Исходная таблица была без индексов. Исправлено 2 раз(а). Последнее : Simple777, 23.05.18 09:33 |
Re: ADIR, глюк с маской "?" | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Криминальный глюк, если это не просто программная ошибка. надо делать контрольный пример, но обычно лень, понятное дело. Сначала подпирается костылем, "это нормально" )
Кстати, у тебя в посте тоже английские слова вперемешку с русскими... Не все смогут прочитать Исправлено 1 раз(а). Последнее : of63, 23.05.18 09:48 |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Никакой программной ошибки там нету. Простенькая прога лазит по двум свободным не связанным между собой таблицам, да еще и без индексов. Глюк + Гендель = Бах |
Re: о %1=0 EMPTY и ROUND | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
"Ожидаемое" - лишь для некомпьютерных математиков да бухгалтеров, программист, понимая как именно представляются числа в памяти уже не будет называть это "глюком" - это просто сложное поведение для "ограничено-точных" чисел (вдвойне сложное в фоксе, с его "неявными" форматированиями/округлениями результатов выражений). Нет, не знает! Когда ты пишешь в коде числовой литерал 1.000001 - да, тогда он "знает" что это число с 6-ю знаками после запятой, и проводя вычисления эту информацию использует (результатом вычисления арифметического выражения является не только само число, но ещё и его "формат отображения", который влияет на то как именно ? и некоторые другие команды/функции будут "визуализировать" это самое число). Когда ты используешь VAL то из разбираемой строки никаких форматов не берётся - берётся, видимо, из SET DECIMAL. Ну а то что = работает не так как empty - это тоже не глюк, а нюанс/фича. В конце концов не удивляет же "странная" работа = для строк Или то что пустая строка и строка с пробелами (формально совсем не пустая) таки EMPTY() ------------------ WBR, Igor |
Re: ADIR, глюк с маской "?" | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
Ни разу с подобным не встречался, вернее встречался, но всегда оказывалось что указатель в EOF() сам и передвигал. Боюсь что здесь тот же случай. Чертей не бывает. ------------------ |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Еще как бывает. Я и в отладке проверял. Когда возвращаюсь в исходную таблицу, она стоит на EOF(). Код простейший без макросов и прочих "наворотов". Иногда, кстати, бывает необходимо выполнить команду go recno(), а то иначе тоже хрень какая-то. В общем, иногда после возврата в исходную рабочую область что-то с указателем записей происходит. |
глюк с Value%1=0 (Double) | |
---|---|
of63 Автор Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> "Ожидаемое" - лишь для некомпьютерных математиков да бухгалтеров, программист [же] ...не будет называть это "глюком"
Название не важно - глюк, фича, нюанс - это не обьяснение. Также не обьяснение, что числа в фоксе хранятся в Double. Я читал про формат Double. Но отсылка "читай про Double" ничего не обьясняет. Она не обьясняет КАК ФОКС превращает строку в Double в операторе X=VAL("1.001"), и как в операторе X=1.001, и в чем разница. И как TRANSFORM интерпретирует эти два разных X Пример с TRANSFORM:
> Ну а то, что = работает не так как empty - это тоже не глюк, а нюанс/фича. В конце концов не удивляет же "странная" работа = для строк Опять малозначительные термины не нравятся... Ничего меня давно не удивляет (даже когда дети вырывают кишки у многодетной матери в Псебае). Когда нарываюсь на глюк/фичу/нюанс (нужное подчеркнуть), то провожу эксперименты, и делаю костыль согласно их результатам. Попутными мыслями же делюсь от скуки, для общения, не более. Пример с Empty(" "+CHR(13)+CHR(9)) (.T.) "не удивляет", потому что это его штатное поведение, придуманное еще в первых ФПД, отрекламированное в первой книжице по фоксу, что де "теперь тип нам не важен при определении пустоты", гы-гы. Странная работа = не может вообще удивлять, потому что представляю строки как набор байтов, и абстрактный процессорный оператор сравнения, который синхронно "бежит" по обоим строкам и сравнивает байты (остановка по # и по SET EXACT). Вообще, программирование - это умение поставить себя на место процессора (не в аппаратном смысле, а в смысле ЯП) и "пройти" команды по шакам в уме, мтк. А вот, например, "АБВ "="абв" (.T.) должен скорее удивлять любителей SET COLLATE TO machine, а вот у фанатов SET COLLATE TO russian на этом половина строчных функция расчитывает |
Re: глюк с Value%1=0 (Double) | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В double то они одинаково "превращаются" (хотя первое во время исполнения - из "строки" прошитой как в исходном, так и в исполняемом/объектном/откомпилированном коде, а второе - на этапе компиляции, из строки aka литерала имеющегося только в исходнике - в объектном коде уже будет НЕ 1.001 а то самое double, ПЛЮС "формат отображения"). www.foxclub.ru Структура Value. Для числовых значений помимо самого "значения" в ev_real хранятся "ширина" и "число десятичных знаков" в полях ev_width и ev_length соответственно. В фоксе не бывает вещественных числовых значений без этих самых двух "дополнений". Даже для Integer (целочисленных) значений и то фокс хранит "ширину". Так что VAL записывает и "ширину" и "точность" - но не из обработанных парсером данных, а из настроек среды. Хотя парсер - тот кто преобразуем "символы циферок" в одно общее значение - всё же влияет на этот процесс. Т.к.
------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 23.05.18 14:49 |
Re: ADIR, глюк с маской "?" | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Без примера не верю. В EOF() переводит указатель что-то реальное, что ты не видишь или не знаешь, а не черти. И если ты проверял в отладке, то не мог не заметить, после какой именно команды указатель переходит в EOF(). Из твоих слов следует, что после SELECT. |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вот до чего же народ недоверчивый пошел. Уже ведь и комп выключил. Пришлось включать. Создал отдельную папку. Переписал туда одну *.prg и убрал GO BOTT в нескольких местах. Без этой команды все формируется корректно. Исходник не корректировал. Какой отсюда вывод? Получается, что никакой. Когда был этот странный глюк, я несколько часов работал в сеансе FPD. Делал всякие разные вещи через командное окно. Потом выходил и запускал из FAR FPD 2.6 c запуском prg-модуля. Глюк воспроизводился. В результате одно важное символьное поле формировалось в некоторых записях пустое. То бишь это никак не могло мне "показаться". Когда именно появлялся EOF(), cейчас затрудняюсь сказать. Но после добавления команды GO BOTT все работало корректно. Так что вот даже и не знаю, как такое возможно. Но это было - поле формировалось не во всех записях (были разные ветки), а исходник я не трогал больше. Правда, компьютер вчера перезагружать тоже не пробовал. Исправлено 2 раз(а). Последнее : Simple777, 23.05.18 17:25 |
Re: ADIR, глюк с маской "?" | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
Почему Go Bott, зачем Go Bott? По моему гораздо очевиднее сделать Select Replaced_Alias перед Replace и уже наплевать что там в других алиасах, конечно, если не подтягивать напрямую из других алиасов данные.
------------------ |
Re: ADIR, глюк с маской "?" | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну мало ли какие там ON KEY LABEL или ON ERROR могли сработать "посреди процесса", при том совершенно незаметно "нагадить" и вернуть управление обратно...
Без воспроизводимого примера это не глюк фокса, а глюк твоей программы. Такие дела... ------------------ WBR, Igor |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Да не использовал я никаких там хитрых настроек, и даже CONFIG.FP переписал тот же.
И вааще это была разовая конвертация данных. Так что было и прошло... |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
В данном частном случае указатель должен был находиться на последней записи. Поэтому даже нет резона сохранять номер записи - индексов тоже нет. И если указатель перешел почему-то на EOF(), то GO BOTT заведомо вернет указатель на последнюю запись, а именно на нее и надо было вернуться. |
Re: ADIR, глюк с маской "?" | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
А вот ресурсный файл я не копировал в новую папку. Возможно, что-то там в этом ресурсном файле - какой-то глюк был.
|
© 2000-2024 Fox Club  |