Обсуждение программирования на Visual Basic в конференции ru.visual.basic
Threads |
RY>> Цель такая - например, по пикселю отрисовать 999999 пикселей. RY>> Допустим, это займет 2-8 секунд. В это время программа должна RY>> работать, как ни в чем не бывало, отрисовка идет на невидимом RY>> фрейме. Через 10 секунд идет отрисовка результата. AS> Схематично, я бы сделал так: AS> Dim CS As Boolean AS> Sub VeryLongSub AS> Dim Pixel As Long AS> If CS Then Exit Sub AS> CS = True AS> For Pixel = 1 To 999999 AS> Draw Pixel AS> DoEvents AS> Next Pixel AS> CS = False AS> End Sub И как ее вызывать, чтобы паралельно заниматься другими делами? AS> Даже и таймеры не нужны ;-) AS> Можно, однако, и с ними: AS> Dim Pixel As Long AS> Sub VeryLongSub AS> Pixel = 1 AS> Timer1.Enabled = True AS> End Sub AS> Sub Timer1_Timer AS> Draw Pixel AS> If Pixel = 999999 Then Timer1.Enabled = False AS> Pixel = Pixel + 1 AS> End Sub AS> Подходит? Вот до этого я и сам додумался. Hо вот минимальный интервал таймера - 55 мс. Сколько будет для 999999 пикселей? :) А если делать кучей - то какую кучу делать, чтобы и процессор не загружать (а они разные бывают), и выполнить быстрее. Вот что я и имел ввиду спросить. ;) * Origin: 1134 (2:5045/44.13) |
Какая кнопка нажата? |
VB>>>> Public Function View() As Boolean VB>>>> action = False AS>>> ^^^ лишняя строчка VB>> Привычка явно инициализировать переменные, не полагаясь на VB>> умолчания, иногда позволяет сберечь много сил и нервов :) AS> Почему нельзя полагаться на умолчания, если они тебя вполне AS> устраивают? И как _повторная_ инициализация переменной _тем_же_ AS> значением сберегает силы? А привычка это что, у одного человека есть AS> привычка писать в условии цикла "While Flag = True". Тоже сберегает AS> силы, не полагаясь на умолчания? Я так пишу. И первое, и второе. А помогает при портировании на VB 20XX, например, проекты для VB.NET тоже не любят, чтобы кто-то полагался на умолчания типа Label1 = "Text". Может, очередной суд обяжет делать все умолчания = True. Hу или компилятор для другой платформы может думать иначе. Короче, я лучше компьютера знаю, что мне нужно держать в переменной. ;) * Origin: 1134 (2:5045/44.13) |
Как узнать заголовок активного окна? |
IV> Плиз, подскажите, как на эхотаге узнать хэндл или сразу caption IV> текущего активного окна в системе (у которого фокус)? GetActiveWindow VB Declaration Declare Function GetActiveWindow& Lib "user32" () Description Obtains the handle of the active window. Для текста - GetWindowText * Origin: 1134 (2:5045/44.13) |
Какая кнопка нажата? |
AS> Имхо меньше сил уйдёт на запоминание _структуры_ (не деталей!) AS> программы, чем на педантичную инициализацию уже инициализированного. AS> Да и код быстрее работать будет. У VB есть определённые возможности, AS> которых нет в других языках, и не использовать их - значит AS> ограничивать себя. Меня всегда забавляет, когда в Class_Initialize AS> обнуляются все локальные переменные, а в Class_Terminate сбрасываются AS> в Nothing все объекты. Hу зачем это? _Совершенно_точно_, что никакой AS> код не будет исполняться до Class_Initialize, и поэтому не испортит AS> нулевые значения по умолчанию. И _совершенно_точно_, что после AS> Class_Terminate ссылки на все объекты очистятся. Зачем это AS> дублировать? ? а меня с детства учили выгружать формы так Unload FormX set FormX = Nothing это глупость? AS> Позволь спросить, может ты и в кинотеатр со своей табуреткой ходишь? AS> Hе полагаясь на умолчание? :-) Можно выскажусь? Большую часть своих похождений в кинотеатры я провел стоя. ;) [1988-1992 год, г. Артем] ;) И мне после этого полагаться на чьи то умолчания? :) * Origin: 1134 (2:5045/44.13) |
Re: Как узнать заголовок активного окна? |
From: "A. Skrobov" Hello, Roman! You wrote in conference fido7.ru.visual.basic to "Ivan Vaneev" +0400: IV>> Плиз, подскажите, как на эхотаге узнать хэндл или сразу caption IV>> текущего активного окна в системе (у которого фокус)? RY> GetActiveWindow The GetActiveWindow function retrieves the window handle to the active window _attached_to_the_calling_thread's_message_queue_. Т.е. она возвращает активное окно в _своём_приложении_. А надо в _системе_. Так что мимо :-Р With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Какая кнопка нажата? |
From: "A. Skrobov" Hello, Roman! You wrote in conference fido7.ru.visual.basic to "A.Skrobov" +0400: VB>>> Привычка явно инициализировать переменные, не полагаясь на VB>>> умолчания, иногда позволяет сберечь много сил и нервов :) AS>> Почему нельзя полагаться на умолчания, если они тебя вполне AS>> устраивают? И как _повторная_ инициализация переменной _тем_же_ AS>> значением сберегает силы? А привычка это что, у одного человека есть AS>> привычка писать в условии цикла "While Flag = True". Тоже сберегает AS>> силы, не полагаясь на умолчания? RY> Я так пишу. И первое, и второе. А помогает при портировании на VB 20XX, RY> например, проекты для VB.NET тоже не любят, чтобы кто-то полагался на RY> умолчания типа Label1 = "Text". Может, очередной суд обяжет делать все RY> умолчания = True. Hу или компилятор для другой платформы может думать RY> иначе. RY> Короче, я лучше компьютера знаю, что мне нужно держать в переменной. ;) Имхо пустая трата времени. Всё равно не предугадаешь, что они там в следующей версии наворотят, и всё равно весь код придётся переписывать ;-) Мне кажется более логичным с помощью VB6 писать именно на VB6, а не на всех-языках-одновременно. Я никого не принуждаю, я высказываю свою точку зрения. AS>> ограничивать себя. Меня всегда забавляет, когда в Class_Initialize AS>> обнуляются все локальные переменные, а в Class_Terminate сбрасываются AS>> в Nothing все объекты. Hу зачем это? _Совершенно_точно_, что никакой AS>> код не будет исполняться до Class_Initialize, и поэтому не испортит AS>> нулевые значения по умолчанию. И _совершенно_точно_, что после AS>> Class_Terminate ссылки на все объекты очистятся. Зачем это AS>> дублировать? RY> ? а меня с детства учили выгружать формы так RY> Unload FormX RY> set FormX = Nothing RY> это глупость? Только что проверил во всех контекстах, которые пришли в голову. _Всегда_ после Unload FormX дёргается и Form_Unload, и Form_Terminate, и если она последняя, завершается приложение. Так что Set FormX = Nothing афаикт лишнее. Глупость или не глупость писать бессмысленные строки - решай сам. With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Threads |
From: "A. Skrobov" Hello, Roman! You wrote in conference fido7.ru.visual.basic to "A.Skrobov" +0400: RY>>> Цель такая - например, по пикселю отрисовать 999999 пикселей. RY>>> Допустим, это займет 2-8 секунд. В это время программа должна RY>>> работать, как ни в чем не бывало, отрисовка идет на невидимом RY>>> фрейме. Через 10 секунд идет отрисовка результата. AS>> Схематично, я бы сделал так: AS>> Dim CS As Boolean AS>> Sub VeryLongSub AS>> Dim Pixel As Long AS>> If CS Then Exit Sub AS>> CS = True AS>> For Pixel = 1 To 999999 AS>> Draw Pixel AS>> DoEvents AS>> Next Pixel AS>> CS = False AS>> End Sub RY> И как ее вызывать, чтобы паралельно заниматься другими делами? Хм. Call VeryLongSub Другие дела - это что? События будут обрабатываться. Если хочешь одновременно с этим запустить ещё что-то, тогда вешаешь на таймер то ещё что-то и вызываешь VeryLongSub. Если то ещё что-то - тоже очень длинное, тогда не знаю как, разве что через фиберы ;-) AS>> Даже и таймеры не нужны ;-) AS>> Можно, однако, и с ними: AS>> Dim Pixel As Long AS>> Sub VeryLongSub AS>> Pixel = 1 AS>> Timer1.Enabled = True AS>> End Sub AS>> Sub Timer1_Timer AS>> Draw Pixel AS>> If Pixel = 999999 Then Timer1.Enabled = False AS>> Pixel = Pixel + 1 AS>> End Sub AS>> Подходит? RY> Вот до этого я и сам додумался. Hо вот минимальный интервал таймера - RY> 55 мс. Сколько будет для 999999 пикселей? :) RY> А если делать кучей - то какую кучу делать, чтобы и процессор не RY> загружать (а они разные бывают), и выполнить быстрее. Вот что я и имел RY> ввиду спросить. ;) Быстрее просто за счёт нитей не выйдет, вот что важно. А размер кучи можно просто прикинуть, например сделать таймер с 110 мс и рисовать пикселы в цикле, пока не пройдёт, скажем, 55 мс, а потом выходить из обработчика. With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: странное либо с ide либо с vb5sp3 |
From: "A. Skrobov" Hello, Roman! You wrote in conference fido7.ru.visual.basic to "All" RY> Конструкция If myfunction(myargument) = False then lalala1 else lalala2 RY> При возвращении false перескакивает на lalala2 :(( RY> В чем причина? Я из-за этого столько времени и нервов потратил. :( RY> Конструкция If Not(myfunction(myargument)) then lalala1 else lalala2 RY> работает, как часы. RY> ps. Это частный случай, раньше никогда такого не замечал, false RY> возвращается совершенно однозначно, проверено дебагером. myfunction() возвращает Boolean или Integer/Long? Если второе, то там есть такая фишка, что (скажем) 1 - это True, и Not 1 - тоже True, и закон логики (A And Not A) = False не выполняется ;-) Если первое, тогда чёрт его знает; проверь в VB6 ;-) With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Какая кнопка нажата? |
From: Alexander Trishin A. Skrobov wrote on Fri, 9 Jul 2004 21:07:35 +0000 (UTC): > RY> ? а меня с детства учили выгружать формы так > RY> Unload FormX > RY> set FormX = Nothing > RY> это глупость? > Только что проверил во всех контекстах, которые пришли в голову. _Всегда_ > после Unload FormX дёргается и Form_Unload, и Form_Terminate, и если она > последняя, завершается приложение. Так что Set FormX = Nothing афаикт > лишнее. Глупость или не глупость писать бессмысленные строки - решай сам. Hе знаю какие у тебя там контексты ;) Hо Terminate не вызовется после Unload FormX. Соответственно все переменные, обьявленные на уровне формы так и будут держать ссылки на объекты (например). trishin.com/project.zip -- AT * Origin: Demos online service (2:5020/400) |
Win 3.* |
гTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT¬ ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦LL=Привет вам, кибер-виртуалы!=--¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ L¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦- DG> Hасколько я знаю, у винды 3 нет апи, значит только обpащениями к Hу тебе уже все сказали, да? :) [Киберпанки, всех стран - объединяйтесь!]-[(A'SC) 2,2k]-[VB6]-[SpiritNet] * Origin: УТОМЛЁHHОЕ СОЛHЦЕвскими (2:5020/2013.74) |