Отправляет email-рассылки с помощью сервиса Sendsay

Новости сайта www.igoryksoft.narod.ru

  Все выпуски  

Новости сайта www.igoryksoft.narod.ru


Информационный Канал Subscribe.Ru


РАССЫЛКА САЙТА WWW.IGORYKSOFT.NAROD.RU И СОВЕТЫ ПО ПРОГРАММИРОВАНИЮ

Всем привет! Я был в отъезде поэтому рассылка временно не выходила. Но за время моей поездки меня посетило, на мой взгляд, много интересных идей...

1

ОБНОВЛЕНИЯ

 

Visual Basic:

1. Как узнать тип процессора? [http://www.igoryksoft.narod.ru/vb/vbother/vbother4.htm]

2. Как текст из буфера обмена вывести на принтер? 

2

БАШНЯ МУДРОСТИ: Меняем название

 

Так получилось, что игра с названием "Башня Мудрости" существует. А это значит, что надо придумывать новое название. Если у кого-то есть предложения, Вы можете из присылать мне на почту.

3

 РЕКОРДЫ ПРОГРАММИСТОВ
 

Мне кажется, что решение задач по программированию дело интересное, но интереснее все-таки решать задачи как можно рациональнее. Так почему же не создать страницу, посвященную рекордам программистов? Придумывайте свои рекорды и посылайте мне на почту, с пометкой "Рекорды программистов" и обязательно укажите язык, которым Вы пользовались и исходный текст Вашей программы. Только придумайте что-нибудь интересное, а то на языке Assembler программа, которая ничего ни делает и состоит из одного байта в ряд ли покажется кому-нибудь интересной. Итак, жду.

4

ОТВЕТЫ НА ВОПРОСЫ

 

Страница для отправления вопросов расположена по адресу: http://www.igoryksoft.narod.ru/quest.htm, орфография писем будет сохраняться.

1. Вопрос от Евгения Яковлева, Дата: 20 июня 2002 года:

Возможно ли содержимое Clipboard (буфера обмена) в формате 'Текст OEM' отправить на принтер (по умочанию) при помощи API функций. Спасибо.

Ответ: 

В принципе можно не использовать API-функциями, а пользоваться
объектом Printer. Я предлагаю тебе такой код:
txtString = Clipboard.GetText 'Считываем текст из буфера обмена
HWidth = Printer.TextWidth(Msg) / 2 'Получаем половину ширины
HHeight = Printer.TextHeight(Msg) / 2 ' Получаем половину высоты
Printer.CurrentX = Printer.ScaleWidth / 2 - HWidth 'Устанавливаем координаты вывода
Printer.CurrentY = Printer.ScaleHeight / 2 - HHeight
Printer.Print txtString 'Вывод на экран
Printer.EndDoc 'Заканчиваем печать

 

2. Вопрос от Олега, Дата: 18 июня 2002 года:

Привет Игорь! Вот прочитал твоё оъявление - "отвечаю на вопросы" и решил тебе написать. Для моей программы нужно сделать дистрибутив(с регистацией компонентов, внесения изменений в реестр(автозапуск, асоциация файлов и т.п.)). Возникает несколько проблем:
1. Как мне нужные файлы упаковать и извлеч?
2. С дистрибутивом придётся тащить msvbvm60.dll, как этого избежать? (читал,что дистрибутив и dll-ку можно заархивировать в SFX файл, и при разархивации автоматически запустить. Если это действительно возможно, то скажи как?)
3. Как отобразить на ProgressBar'е процент выполненого действия?
Заранее благодарен!!!

Ответ:

1. К сожалению средствами VB это сделать почти невозможно, но насколько я знаю на сайте www.vbnet.ru в разделе "Программы" была программа для создания дистрибутивов.
2. Вообще-то см. пункт 1. Но я не советую тебе включать в архив файл msvbwm60.dll - твой дистрибутив будет занимать больше 2-х Мб, а это не совсем удобно для переноса. Сейчас я работаю над созданием программы, которая бы создавала отдельный DLL-файл, в котором бы были все экспортируемые функции для данной программы. Если что-нибудь получится, я напишу об этом в рассылке.

3. Ты должен узнать сколько действий должно произойти, чтобы было сто процентов. И после каждого действия обновлять свойство проценты объекта ProgressBar по следующей формуле:
(100%\кол-во_действий)*№действия

 

3. Вопрос от Михаила, Дата: 11 июня 2002 года:

Здравствуйте !!
У меня проблемы с чтением больших файлов ( тормозит комп),с чем это
может быть связано ?
Вот текст:
Private Sub But1_Click()
CommDlg1.InitDir = App.Path
CommDlg1.ShowOpen
If CommDlg1.FileName <> "" Then
Open CommDlg1.FileName For Binary As 1
ProgBar1.Min = 1
ProgBar1.Max = LOF(1)
Txt1.Text = CommDlg1.FileTitle
Do While Not Loc(1) = LOF(1)
a$ = Input$(1, #1)
ProgBar1.Value = Loc(1)
Loop

End If
Close
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Unload Me
End
End Sub

Ответ:

Данная проблема вызвана тем, что считывание производится по байтам, а это, конечно, очень долго. Замени цикл Do..Loop на следующий код:
a$ = Input$(LOF(1),1)
тогда в строковой переменной a$ окажется весь текст файла. Лучше всего объявить переменную так: Dim a$ As String * примерное_кол-во_байтов_в_файле
Если тебе нужно, чтобы на прогрессбаре изменялось кол-во процентов, то замените этот же цикл следующим кодом:
LenByte = LOF(1) \ 100 + 1 'Вычисляем длину файла \ на 100%
For i = 1 To LenByte
a$ = a$ & Input(LenByte,1)
b = Loc(1) + LenByte
if b <= LOF(1) then Loc(1) = b
Next
Если тебе не нужно заносить данные в переменную, то убери строчки с переменной a$.

5

ПОСЛЕСЛОВИЕ

 

Ну вот и все на сегодня. Пишите на почту о чем бы Вы хотели прочитать в следующей рассылке.

Пишите на почту: igoryksoft@yandex.ru

Заходите на сайт: http://www.igoryksoft.narod.ru

© IgorykSoft, 2002


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное