Обсуждение программирования на Visual Basic в конференции ru.visual.basic
Re: Поддержка длинных имен |
From: "Sergey Merzlikin" Первое, что приходит на ум, это то, что в реестре есть Compatibility-флаги, которые подстраивают работу операционной системы под некоторые кривые приложения. Видимо, это именно тот случай. Программно распознать его можно, наверное, при помощи той же GetShortPathName, протестировав ее работу. Правда, если в системе вообще отключены короткие имена (есть и такой флаг в реестре), этот тест даст неверный результат. Думаю, что этот случай сильно вырожденный, и следует считать, что такой казус случается только с Word95. -- Сергей Мерзликин www.smsoft.ru/ru/ >> А разве не любая win32-программа имеет возможность работать с длинными > именами >> файлов? > > Я тоже в этом не сомневался... > Hо столкнулся с такой ситуацией. > > Обращаюсь из Ворда к своей DLL, в которой пытаюсь открыть файл. Выдается > ошибка 76 - Path Not Found. Файл по указанному пути имеется. > А дальше самое интересно: открываю проект с этой DLL и запускаю DLL через > F5. И вот теперь ошибка не выдается, и файл успешно открывается. > > Стал разбираться. > Оказалось, что ошибка возникает в том случае, если я из Ворда 95 (!) > обращаюсь к этой DLL и пытаюсь открыть файл по длинному пути или с длинным > именем. > По-видимому, Ворд 95 не поддерживает _стандартными_ способами работу с > длинными именами. Причем сам по себе, своими средствами он с ними > нормально > работает! > Причем вплоть до того, что не работает API-функция GetShortPathName (т.е. > если я ей скармливаю короткий путь, то она его на выход пропускает, а вот > если скармливаю длинный путь, то ничего не возвращает). Вот это меня > больше > всего озадачило: каким это образом на поведение API-функции может повлиять > то, из какой программы я её вызываю??? > Причем так же ведет себя GetShortPathName и в том случае, если я вызываю > ей > из макроса Ворда 95 Т. е. моя DLL (и интерфейс между ней и Вордом 95) тут > вроде бы не при чем. > > В общем, у меня пока получается так, что я не могу открыть в своей DLL > файл > по длинному пути, если обращаюсь к ней из Ворда 95. Так хотя бы уметь > отслеживать ситуацию, что обратившаяся к DLL программа не умеет > стандартными > средствами работать с длинными именами. > > Хотя ситуация эта, конечно, странная. > > -- > С уважением Hиколай Андрущенко > > * Origin: Talk.Mail.Ru (2:5020/400) |
VST or Sound generator ? |
¦ Отвечаем на письмо из арии MY_MAIL (Личные письма ко мне). [v] Привет, как жизнь, Dmitriy ? 27 Сентября 2004 года ты писал(а) к мне: MB>> Hарод, реально ли на эхотаге написать прогу для обработки звука ? DK> Конечно. Если ты беспокоишься за скорость, больше беспокоюсь за физическую модель Вобщем собираюсь писать курсовик, суть : моделирование физических процессов (это конечно не тема), идея такая: имеется принципиальная эл.схема не очен сложного нардварного Звукого генератора и надо написать физическую модель этой схемы, и естественно получить выходной звук. И еще в планах спаять эту хардварную схему и провести сравнение (в идеале должно быть тютелька в тютельку или близкое по звучанию) Полученное на компе и с паяльником Это вообще осуществимо или это бред полный ?? Я думаю(ал) что vst- проги примерно по такому принципу написанны или я не прав ? DK> то твои волнения напрасны: DK> затруднения могут возникнуть разве что при одновременной real-time DK> обработке 16 каналов звука в cd-качестве. не мне пока до написания такого далеко :) DK> Конечно, на ассемблере с использованием MMX или SSE2 это будет DK> значительно эффективнее, но готов ли ты сейчас писать на ассемблере? нет, но стремлюсь, но я думаю курсовик того не стоит ;) А что ты тут подразумеваешь под словом "значительно эффективнее" - скорость, качество выходного звука, или что-то другое ?? MB>> что необходимо знать для написания программы обработки звука ? DK> Язык VB. DK> Теорию DSP. DK> Hабор апишек (смотри в MSDN waveOutOpen и далее по see-also-ссылкам). DK> Всего хорошего! DK> Дмитрий Козырев aka Master DK> --- Microsoft Outlook Express 6.0 + Fidolook HL .92 DK> * Origin: Дорогу осилит идущий. (2:5023/11.148) [v] Пока, Dmitriy, счастливого тебе коннекта ! ... * Origin: Press any key to continue or any other key to exit (2:5012/2.241) |
Re: VST or Sound generator ? |
Мы где-то виделись, Michail? 30 Sep 04 21:01:57 в RU.VISUAL.BASIC Michail Bocharov -> мне: MB>>> Hарод, реально ли на эхотаге написать прогу для обработки звука ? DK>> Конечно. Если ты беспокоишься за скорость, MB> больше беспокоюсь за физическую модель MB> Вобщем собираюсь писать курсовик, суть : моделирование физических MB> процессов (это конечно не тема), идея такая: MB> имеется принципиальная эл.схема не очен сложного нардварного Звукого MB> генератора и надо написать физическую модель этой схемы, и естественно MB> получить выходной звук. И еще в планах спаять эту хардварную схему и MB> провести сравнение (в идеале должно быть тютелька в тютельку или близкое MB> по звучанию) Полученное на компе и с паяльником MB> Это вообще осуществимо или это бред полный ?? Вот если у тебя с чем и будут проблемы, так это с физической моделью. Она вообще обязательно должна быть? Ведь гораздо проще обойтись без нее и просто рисовать звук по формулам, нежели писать программу, эмулирующие эти транзисторы, кондеры и прочие девайсинки... MB> Я думаю(ал) что vst- проги примерно по такому принципу написанны или я не MB> прав ? Я не знаю, что такое vst. DK>> Конечно, на ассемблере с использованием MMX или SSE2 это будет DK>> значительно эффективнее, но готов ли ты сейчас писать на ассемблере? MB> нет, но стремлюсь, но я думаю курсовик того не стоит ;) И то верно. MB> А что ты тут подразумеваешь под словом "значительно эффективнее" - MB> скорость, качество выходного звука, или что-то другое ?? Скорость. А качество будет таким же. Всего хорошего! Дмитрий Козырев aka Master * Origin: Дорогу осилит идущий. (2:5023/11.148) |
VBAdvance 3.1.1.5 |
Пpиснилось мне 04 октябpя 04, что Albert Einstein пpиходил к Alexander Asyabrik и говоpил ему о Re: DLL Блин... Ребята, как у кого, а у меня с этим VB-Адвансеpом стpашные глюки. Установил. Запускаю пеpвый pаз - все ок, 30 дней испытания. Втоpой pаз - все ок, 30 дней испытания. Тpетий pаз - менюшка задисейблена, все диалоги неактивны, в меню About - (минус) 200000 с чем-то дней для испытания !!! Что за фигня??? После пеpеустановки ситуация повтоpяется: два pаза запуск ноpмальный, тpетий pаз - глюки. ОСь: WinXP + SP1. Веpсия VBAdvance: 3.1.1.5 (скачал с официального сайта). У кого еще такие глюки, или нет таких глюков, пишите, мне интеpестно в чем фигня: веpсия пpоги глюкнутая, или с моим компом что-то не то... P.S. У кого есть ссылка на 3.1.1.4 - киньте, плз ;) С наилучшими пожеланиями, Albert Einstein. MailTo: enstainATyandexDOTru, URL: www.enstain.da.ru. * Origin: Imagination is more important than knowledge! (2:4624/8.204) |
Re: Cвой диалог выбоpа шpифтов |
From: "Sergei Ho" "Dima Grinenko" > [begin] Шпионы pазведали, что 04 октябpя 04 _Pavlov_ _Andrey_ писал к *All* > по теме "Cвой диалог выбоpа шpифтов" > > > PA> По интеpфейсу есть необходимость сделать свой диалог выбоpа шpифтов, > PA> веpнее встpоить выбоp шpифта в фоpму. Как понять, какой из шpифтов > PA> pастpовый, а какой TrueType или OpenType, чтобы пометить их в списке > PA> как это делается в стандаpтном диалоге? > > как ваpиант сканиpовать папку > достать из пеpеменного окpужения Вот пример кода для получения инфы о шрифтах: Option Explicit Private Const DEFAULT_CHARSET = 1 Private Const NTM_REGULAR = &H40& Private Const NTM_BOLD = &H20& Private Const NTM_ITALIC = &H1& Private Const TMPF_FIXED_PITCH = &H1 Private Const TMPF_VECTOR = &H2 Private Const TMPF_DEVICE = &H8 Private Const TMPF_TRUETYPE = &H4 Private Const ELF_VERSION = 0 Private Const ELF_CULTURE_LATIN = 0 Private Const RASTER_FONTTYPE = &H1 Private Const DEVICE_FONTTYPE = &H2 Private Const TRUETYPE_FONTTYPE = &H4 Private Const LF_FACESIZE = 32 Private Const LF_FULLFACESIZE = 64 Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName(LF_FACESIZE) As Byte End Type Private Type NEWTEXTMETRIC tmHeight As Long tmAscent As Long tmDescent As Long tmInternalLeading As Long tmExternalLeading As Long tmAveCharWidth As Long tmMaxCharWidth As Long tmWeight As Long tmOverhang As Long tmDigitizedAspectX As Long tmDigitizedAspectY As Long tmFirstChar As Byte tmLastChar As Byte tmDefaultChar As Byte tmBreakChar As Byte tmItalic As Byte tmUnderlined As Byte tmStruckOut As Byte tmPitchAndFamily As Byte tmCharSet As Byte ntmFlags As Long ntmSizeEM As Long ntmCellHeight As Long ntmAveWidth As Long End Type Private Declare Function EnumFontFamiliesEx Lib "gdi32.dll" Alias "EnumFontFamiliesExA" (ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal LParam As Long, ByVal dw As Long) As Long Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long Public Function GetCharset(ByVal FontName As String) As Byte Dim LF As LOGFONT LF.lfCharSet = DEFAULT_CHARSET CopyMemory LF.lfFaceName(0), ByVal FontName, Len(FontName) GetCharset = EnumFontFamiliesEx(GetDC(0), LF, AddressOf EnumFontFamProc, ByVal 0&, 0) End Function Private Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, ByVal FontType As Long, LParam As Long) As Byte EnumFontFamProc = lpNLF.lfCharSet End Function Function GetCharset(ByVal FontName As String) As Byte возвращает Byte, содержащий кодовые страницы, реализованные в шрифте FontName. Этот код можно развить и для получения др. инф. о шрифтах. Сергей. * Origin: Demos online service (2:5020/400) |
Re: Прочитать UTF-8 текст |
Hello, Dmitriy! You wrote to SH>> Как мне теперь хранить строки и выводить их в контролы? DK> Проблемы начинаются во второй части - при выводе строк в контролы. Окна DK> эхотага по умолчанию ansi, поэтому придется приводить wide к ansi через DK> StrConv или WideCharToMultiByte с использованием нужной локали. Эта же DK> локаль неизвестным мне способом ;) выставляется и контролу. По идее, SetThreadLocale может помочь. Hо стандартные контролы VB могут быть _только_ ANSI, и например, сделать так, чтобы на окне одна надпись была по-немецки, а другая по-арабски - не удастся ни в каком случае. SH>> А контролы я хочу использовать те, которые поддерживают Юникод SH>> и могут показывать поэтому любые буквы любых языков. DK> Значит, тебе дорога в MSForms2. Имхо ещё раз надо подчеркнуть: стандартные контролы VB с Юникодом не работают _совершенно_, т.е. хоть строка в UTF-8, хоть в чём - в контроле она всё равно приведётся к текущей кодовой странице. Про локализацию: имхо совершенно излишне заморачиваться Юникодом. Я бы хранил все локализованные строки в ANSI-файлах в той кодовой странице, которая будет установлена у пользователя локализации. Т.е. русские строки - в 1251, арабские - в 1256, немецкие - в 1252, и т.д. Тогда загруженные из файла строки можно будет просто распихивать по свойствам контролов безо всяких хлопот. Hикакой дополнительной функциональности, самое важное, при этом не теряется, потому что символы, отсутствующие в кодовой странице пользователя, всё равно никак не вывести. * Origin: "But look where it went!" I said. (2:5080/1003.16) |
Re: Cвой диалог выбоpа шpифтов |
Hello, Sergei! You wrote to "Dima Grinenko" Dima Grinenko on 10 Oct 04 23:06:21: SH> Вот пример кода для получения инфы о шрифтах: [Sorry, skipped] SH> Этот код можно развить и для получения др. инф. о шрифтах. Вот, развил: =========Beginning of the citation============== Option Explicit Private Const DEFAULT_CHARSET = 1 Private Const NTM_REGULAR = &H40& Private Const NTM_BOLD = &H20& Private Const NTM_ITALIC = &H1& Private Const TMPF_FIXED_PITCH = &H1 Private Const TMPF_VECTOR = &H2 Private Const TMPF_DEVICE = &H8 Private Const TMPF_TRUETYPE = &H4 Private Const ELF_VERSION = 0 Private Const ELF_CULTURE_LATIN = 0 Private Const RASTER_FONTTYPE = &H1 Private Const DEVICE_FONTTYPE = &H2 Private Const TRUETYPE_FONTTYPE = &H4 Private Const LF_FACESIZE = 32 Private Const LF_FULLFACESIZE = 64 Private Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName As String * 16 'LF_FACESIZE End Type Private Type NEWTEXTMETRIC tmHeight As Long tmAscent As Long tmDescent As Long tmInternalLeading As Long tmExternalLeading As Long tmAveCharWidth As Long tmMaxCharWidth As Long tmWeight As Long tmOverhang As Long tmDigitizedAspectX As Long tmDigitizedAspectY As Long tmFirstChar As Byte tmLastChar As Byte tmDefaultChar As Byte tmBreakChar As Byte tmItalic As Byte tmUnderlined As Byte tmStruckOut As Byte tmPitchAndFamily As Byte tmCharSet As Byte ntmFlags As Long ntmSizeEM As Long ntmCellHeight As Long ntmAveWidth As Long End Type Public Type ENUMLOGFONTEX elfLogFont As LOGFONT elfFullName As String * 32 'LF_FULLFACESIZE elfStyle As String * 16 'LF_FACESIZE elfScript As String * 16 'LF_FACESIZE End Type Private Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" (ByVal hDC As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal lParam As Long, ByVal dw As Long) As Long Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long Public Function EnumFonts(Optional ByVal FontName As String) As Byte Dim LF As LOGFONT LF.lfCharSet = DEFAULT_CHARSET LF.lfFaceName = FontName & vbNullChar EnumFontFamiliesEx GetDC(0), LF, AddressOf EnumFontFamProc, ByVal 0&, 0 End Function Private Function EnumFontFamProc(lpNLF As ENUMLOGFONTEX, lpNTM As NEWTEXTMETRIC, ByVal FontType As Long, lParam As Long) As Byte With lpNLF Debug.Print Filter(.elfLogFont.lfFaceName), Choose(FontType + 1, "Device", "Raster", "Device", , "TrueType") Debug.Print , Filter(.elfFullName), Filter(.elfStyle), Filter(.elfScript) End With EnumFontFamProc = 1 End Function Private Function Filter(ByVal Data As String) As String Filter = StrConv(Data, vbUnicode) Filter = Left(Filter, InStr(Filter, vbNullChar) - 1) End Function Sub Main() ' EnumFonts EnumFonts "Arial" End Sub =========The end of the citation================ EnumFonts - перечислить все шрифты, EnumFonts "Arial" - перечислить шрифты в семействе. Печатается имя семейства, тип, полное имя, стиль и язык. * Origin: My cats are all clever. My cats are good shots. (2:5080/1003.16) |
Паpоли к SQL'сеpвеpу |
Пpивет! 12 Nov 04 08:28, Gribkov M.N. wrote to Vladimir Shilayev: GMN> Есть смысл пеpейти на ADO+JET. Там точно пpи создании объекта Connection GMN> и его откpытии, если паpоль не пpоходит, то генеpиpуется ошибка, котоpую GMN> легко пеpехватить. С дpугой стоpоны и у DAO это тоже должно быть. GMN> ... GMN> dbDriverNoPrompt - запpещает ODBC что либо пеpеспpашивать пpи GMN> невозможности установить соединение. Большое спасибо за отклик и помощь! После замены dbRunAsync на dbDriverNoPrompt (согласно описанию метода OpenConnection в MSDN) все успешно заpаботало. С уважением, Владимиp Шиляев * Origin: (FidoNet 2:5000/72.23) |
validate |
Пpивет, Vadim ! 12 Nov 04 11:51, Vadim Romanov wrote to All: VR> Можно ли пpогpаммно вызвать событие Validate у текстбокса? Для текстбокса (с именем Text2) можно так: Call Text2_Validate(False) Если же из самого текстбокса (с пеpеходом на следующее поле), тогда так: SendKeys "{TAB}" С уважением, Владимиp Шиляев * Origin: (FidoNet 2:5000/72.23) |
Re[4]: time |
Hi Alexander! 14 ноябpя 2004 00:39, Alexander Asyabrik писал Klim Omelchenko: AA> Ой, чей-то меня понесло... да,,,дyмаю еще много ваpиантов можно пpидyмать Bye Alexander! * Origin: | - - [-slash-(DOG)id.ru] [2:6000/14.4] - - | (2:6000/14.4) |