Проблемы совместимости 98 и XP

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Проблемы совместимости 98 и XP

Сообщение GSerg » 19.11.2004 (Пт) 6:53

Здесь я буду выкладывать всякую фигню, с которой я сталкиваюсь :)
Просто кодить приходится как на 98, так и на XP, вот и возникают наидибильнейшие проблемы, которые отнимают кучу времени тем не менее.

Command$
Под 98 это дело возвращает обычный путь (скорее всего, в формате 8.3). Естественно, что я всегда юзаю GetLongFileName. Так вот: GetLongFileName не принимает путь, заключённый в кавычки. А XP именно такой путь и возвращает, в отличие от 98. Так что пришлось завести функцию UnQuote.

GetOpenFileName
Часто мы отводим буфер под имя файла как space$(num). И под 98 это прекрасно работает. Но под XP ограничение ужесточили: нужно обязательно устанавливать первый символ буфера в 0, если буфер не содержит правильного пути к файлу. Часа два не понимал, почему GetOpenFileName не работает. Даже InitCommonControlsEx применял на все виды контролов.
Так что string$(num, vbnullchar).


Ну и вы тоже выкладывайте, с чем сталкивались :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2005 (Вт) 12:50

Чё, думали, тема умерла? Фиг вам :)

Common Dialog
То, что написано в MSDN насчёт выбора места старта для функций GetOpenFileName и GetSaveFileName, не совсем верно. Написано, что на 9х виндах определяется так-то, а на 2k+ среди прочих вариантов есть такой: «Если вы не указали стартовый путь при вызове функции, и если вы запускали это дело раньше, то в качестве начального будет выбран тот путь, на котором вы остановились прошлый раз».
Это не так. Проверил сам.
Всё наоборот. На 98 винде вызвал диалог – прошёл по дереву – выбрал файл – кликнул ОК. Ещё раз вызвал диалог – и он начинается с того места, где я кликнул ОК тот раз. На XP вызвал диалог, прошёл, выбрал, ОК. Вызвал снова – а он начинается в том же месте, в котором начался предыдущий, то есть очень далеко от нужного места.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2005 (Вт) 12:51

Common Dialog
Мне нужно было кастомизировать Common Dialog, то есть добавить в него ричтекстбокс. Его-то я добавил, но его же ещё нужно ресайзить вместе с CD. Написал обработчик ресайза (Тёмычу респект за пример сабклассинга в офисе 97). Проверил на Win98 – заметил хитрую вещь: длина комбобокса, содержащего список директорий, не увеличивается при изменении размеров диалога. А вот кнопки, которые справа от этого комбобокса, двигаются. Причём ограничителем их движения стандартный обработчик считает не правую границу комбобокса (что было бы естественно, на мой взгляд), а правую границу главного листвью. То есть если я своим кодом уменьшу ширину листвью так, что он станет уже комбобокса, то при этом кнопки на этот комбобокс наедут. И будет очень некрасиво.
Естественно, я написал ограничитель минимального размера листвью, взяв границей этот самый комбобокс. Всё прекрасно заработало.
Протестил на XP. Ха-ха. Комбобокс теперь изменяет свою ширину вместе с диалогом. В результате чего мой ограничитель не только теряет смысл, но и приводит к очень серьёзным диспропорциям в размерах превьюшного рича.

Надо покопать в сторону правильной кастомизации CD, через stc32. Тёмыч, ты меня понял? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.02.2005 (Вт) 12:52

Excel
Есть в экселе команда OpenText для открытия текстовых файлов (CSV в частности). Есть у меня CSV, разделители запятые, у чисел десятичная точка. Пишу макрос, открывающий такой файл и делающий с ним много полезного. Запускаю по F5 из 97 экселя – не работает. Числа импортируются текстом, поскольку точка не распознаётся как десятичный разделитель. Но если тот же макрос повесить на кнопку панели инструментов, и кликнуть по ней, то всё импортируется правильно.

Но в Экселе XP это не работает. Он думает, что самый умный, в результате чего импортировать приходится вручную. В общем, сделали из фичи баг. Десятичная точка при импорте из CSV не должна зависеть от национальных настроек. Но зависит.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Проблемы совместимости 98 и XP

Сообщение alibek » 15.02.2005 (Вт) 13:01

GSerg писал(а):GetOpenFileName
Часто мы отводим буфер под имя файла как space$(num). И под 98 это прекрасно работает.
...
Так что string$(num, vbnullchar).

Хе :)
А я вот всегда так и делал :)
Вернее даже String$(num, 0), ИМХО это быстрее.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 111

    TopList