Win32 вопросы

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

DimkaM wrote:А пока его не будет в контролсах - он не будет рефрешица
Он уже не рефрешится.
DimkaM wrote:В твоём случае можно заранее создать DataTable(и тп), заполнить и подцепить к DataGridView
Ключевое слово заполнить - быстрее, чем заполняется не будет.
А заполнять, как ни крути, время нужнО.
Lavr wrote:Попробовал опцию "загрузки" без обращения к дисковому буферу - просто возвращал принудительно
байт 00Н - для 15.000 позиций время всё-равно реально требуется, на быстром компьютере - конечно
же всё будет быстрее.
"Загрузка" без обращения к дисковому буферу - это и есть просто заполнение байтом.

Да в общем-то скорость сейчас нормальная - это мне на ноуте с 366 МГц казалось, что медленно,
на ноуте с 2.5 ГГц - так уже не кажется. :wink:
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

ДВОЙНЫЕ СЛЭШИ В ПУТЯХ WIN_7

Post by Lavr »

Что-то у меня тут под Вендой 7 проблема возникла совершенно неожиданная... :(

Компилятор ресурсов стал прописывать пути для ресурсов в файл *.rc вот так:

MAINICON ICON "C:\\PROGRAM FILES\\SAMPLES\\MY_PROG\\BINEDIT\\DOC.ICO"
MYDLGICO ICON "C:\\PROGRAM FILES\\SAMPLES\\MY_PROG\\BINEDIT\\DLG.ICO"
MYDLCURS CURSOR "C:\\PROGRAM FILES\\SAMPLES\\MY_PROG\\BINEDIT\\HAND.CUR"


То есть в путях слэши почему-то стали двойные... :o

После чего такой файл BINEDIT.rc сам же компилятор компилировать не может.
Пишет - ошибка.

Если поправить слэши вручную обратно в "правильные" - то компилирует нормально.

Но я уже понял, что под Вендой 7 многим программам (если не всем) путь передается
с двумя слэшами (или это как-то при передаче происходит).
Из-за чего некоторые старые программы не могут открыть назначенные для них файлы.

Погуглил - да, проблема встречается не только у меня. Но с чем она связана и как её порешать,
явного ответа пока не нашел... :(

Возможно, кто из наших коллег знает?
iLavr
User avatar
Shaos
Admin
Posts: 24081
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

два бекслеша это по сишному - видимо кто-то из мелкомягких программистов попутал и вытащил чисто программное написание на уровень пользователя...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:два бекслеша это по сишному ...
Да, я прочитал такую версию, что "по сишному" один бекслеш якобы "маскирует" другой.

Но как соотнести это с путями. :(

У меня была давно такая проблемка с одной всего программой уже и не помню на какой машине.
Порешал, помню, в лобовую: написал для программы "стартер" с её именем, а саму программу -
переименовал. "Стартер" получал "неправильные" пути, переделывал их в "правильные" и с ними
вызывал саму программу.

Но это ведь как "удалять гланды... автогеном... через жопу..."! :o

Что-то вроде пытается прояснить статья: Slash и backslash: вехи на пути, но как-то не очень внятно... :-?
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

При перетаскивании и "выполнить с помощью" за прием командной строки с путем отвечает
функция API:

GetCommandLineA()

Проверил её отдельно на маленькой программке - возвращает нормальный путь, правда
в кавычках, что значит передачу длинных имён...

Значит глюк двойных слешей возникает не здесь.
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Lavr wrote:некоторые старые программы не могут открыть назначенные для них файлы.... :(
С этим разобрался, просто теперь для вот этой папки:

C:\PROGRAM FILES\ у Венды 7 нет короткого имени C:\PROGR~1\

Это приводит в ступор некоторые старые программы.
И я даже не знаю, как это исправлять... :(
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

С этой проблемой многие столкнулись, поскольку у всех есть свои какие-то нужные старые
программы, которые люди тащут за собой на Винду_7, а эти училиты никак не понимают
длинное имя "PROGRAM FILES".

Выход подсказывают такой: прежде всего в корне диска С:\ выполнить команду:

dir /x

она показывает имена в формате 8.3 наряду с длинными.

И если у PROGRAM FILES нет короткого имени PROGRА~1, то надо попробовать
его сделать.

Сначала формирование имен в формате 8.3 надо разрешить в принципе:

С:\fsutil behavior set disable8dot3 0

если это произошло успешно, то формируем короткое имя:

С:\fsutil file setshortname "PROGRAM FILES" "PROGRA~1"

Первая операция у меня удалась, хотя я её и сделал через редактор реестра - там
это значение "0" надо выставить в параметре NtfsDisable8dot3NameCreation.

А вот со второй операцией - фиаско полное... Хотя я единственный пользователь-
админ своего ноута, доступ к этой операции мне Венда 7 никак не даёт! :lol:
Хотя я уже выполнил кучу ухищрений из хелпов и интернета, чтобы своим жестким
диском овладеть! 8)
iLavr
User avatar
Shaos
Admin
Posts: 24081
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Есть способ решить твои проблемы :)

1. ставишь на свой новомодный ноут один из последних линухов
2. на линух ставишь VirtualBox (в дебиане вроде доступен из стандартных пакетов)
3. инсталлируешь в VirtualBox самый лучший дос "Зло-98SE" ;)
4. получаешь винду в окошке :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Если ты обратил внимание, то я к этому с разных сторон и прицениваюсь! :lol:
Но перед п. 1, и пока на диске нет множества программ, я помучаю всё же "Зло 7"! 8)

Пока не сломается... :wink:
iLavr
DimkaM
Maniac
Posts: 261
Joined: 22 Jun 2005 04:35
Location: МО Россия

Post by DimkaM »

У меня откуда то уже есть короткие имена. вин7х64
Может это потому что ты через реестр короткие имена включал, а не через CMD от имени администратора?
User avatar
Shaos
Admin
Posts: 24081
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Ну про VirtualBox речи пока не шло - я только сегодня вспомнил про такой вариат, который кстати у меня самого давно имеется - просто есть пара старых полезных виндовых программок, которые не работают в Wine, вот для них у меня VirtualBox и установлен с 98SE в нём - там удобно тем, что образ диска в файле и этот файл можно бекапать, т.е. что-то сломал - откатил файл обратно и играешься дальше :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
DimkaM
Maniac
Posts: 261
Joined: 22 Jun 2005 04:35
Location: МО Россия

Post by DimkaM »

Сменить шортнейм не даёт.
Но удалось сменить шортнейм у програмфайлса, из под рекавери консоли.
D:\>windows\system32\fsutil file setshortname "Program Files" PROGI

Я так думаю потому что, какие нить проги и дллки запущены из програмфайлсов, по этому не даёт переименовать шортнейм
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

DimkaM wrote:У меня откуда то уже есть короткие имена. вин7х64
Похоже, что у меня Венду ставили при запрещенных коротких именах.
Потому что у меня только одно короткое имя папки "Total Commander" - которую я сам ставил.
Больше коротких имен ни у одной длинной папки нет.

А сейчас, когда короткие имена разрешены, они создаются одновременно с длинными.
Я в папке WinUtils специально создал для проверки "Program Files" - и у него сразу было
короткое имя PROGRА~1.

Вся "теория" с именами следующая:
В системах Windows Server 2008/2003, Windows 7, Windows Vista и XP файловая система NTFS по умолчанию назначает имена в старом формате 8.3 для каждого файла с длинным форматом файлового имени, чтобы предоставить возможность старым приложениям иметь к ним доступ. Если вы не пользуетесь старыми приложениями или файловый сервер сильно нагружен, то настройка или даже отключение имен 8.3 может значительно увеличить производительность файловых операций.

В соответствии со стандартными настройками, имена 8.3 устанавливаются на базе выбора разделов. Имена 8dot3 можно отключить вообще, а можно отключить для всех томов, кроме системного тома или раздела.

Эта функция регулируется ключом реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation

Установите для NtfsDisable8dot3NameCreation любое из следующих значений:
0 – включить генерацию имен 8dot3
1 – отключить генерацию имен 8dot3
2 – включить генерацию имен 8dot3, базирующихся на выборе разделов (по умолчанию)
3 – отключить генерацию имен 8dot3 для всех разделов, кроме системного

Также эту функцию можно настроить путем непосредственного редактирования ключа реестра или с помощью команды fsutil

Команда fsutil
1. Нажмите Пуск – в строке поиска введите cmd, щелкните по пункту правой кнопкой и выберите «Запуск от имени администратора».
2. В командной строке введите следующее:
fsutil 8dot3name set <0,1,2,3>
где 0, 1, 2, 3 – соответствующие значения.
Перезагрузите систему, чтобы изменения вступили в силу.
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:Ну про VirtualBox речи пока не шло - я только сегодня вспомнил про такой вариат,
который кстати у меня самого давно имеется
Я про него и сам давно знаю. Я ж искал себе различные эмуляторы DOS и читал про них
довольно много.
iLavr
User avatar
Shaos
Admin
Posts: 24081
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Кстати вроде DOS на VirtualBox как раз и не поставить - это должна быть более-менее современная ОС с гостевой поддержкой - для доса есть DosBox :)

P.S. хм, DOS в списке есть, однако "Only limited testing as part of system installation processes has been performed"...

P.P.S. VirualBox умеет даже Mac OS X Server (Leopard, Snow Leopard) запускать :o

P.P.P.S. Кстати наоборот тоже можно - поставить VirualBox в Зло-7 и гонять в нём разные линухи из списка :)
Я тут за главного - если что шлите мыло на me собака shaos точка net