Так
получилось, что игра с названием "Башня
Мудрости" существует. А это значит,
что надо придумывать новое название.
Если у кого-то есть предложения, Вы
можете из присылать мне на почту.
3
РЕКОРДЫ
ПРОГРАММИСТОВ
Мне
кажется, что решение задач по
программированию дело интересное, но
интереснее все-таки решать задачи как
можно рациональнее. Так почему же не
создать страницу, посвященную рекордам
программистов? Придумывайте свои
рекорды и посылайте мне на почту, с
пометкой "Рекорды программистов" и
обязательно укажите язык, которым Вы
пользовались и исходный текст Вашей
программы. Только придумайте что-нибудь
интересное, а то на языке Assembler программа,
которая ничего ни делает и состоит из
одного байта в ряд ли покажется кому-нибудь
интересной. Итак, жду.
Возможно ли содержимое 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
ПОСЛЕСЛОВИЕ
Ну
вот и все на сегодня. Пишите на почту о
чем бы Вы хотели прочитать в следующей
рассылке.