Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод проги из под DOS в Windows, прога сделана для Dos надо переделать 
:(
    Опции темы
Маринка
Дата 13.1.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.12.2003
Где: Иркутск

Репутация: нет
Всего: нет



Здравствуйте, с праздниками всех.

У меня такая проблемка. Есть расчетная программа. на VB, которая сделана для работы в DOS'e ! Надо её как-то переделать так, чтобы она работала в виндузе. А также она почему-то не хочет работать с лазерным принтером. Первый раз сталкиваюсь с такой проблемой, поэтому даже не представляю как это делать. вроде бы и не сложно, а когда берусь, то выходит , что не всё так просто.

Помогите, пожалуйста.

Большое спасибо заранее.
PM MAIL WWW ICQ   Вверх
Naghual
Дата 13.1.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



А есть исходники этой програмки?
Или хотябы алгоритм ее работы и расчетные функции?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Маринка
Дата 14.1.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.12.2003
Где: Иркутск

Репутация: нет
Всего: нет



Исходник есть и я его прикрепляла к сообщению №1, почему-то его нет. Можно же сюда вставить файл? Пробую ещё раз.

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  MAX.bas 10,09 Kb
PM MAIL WWW ICQ   Вверх
Naghual
Дата 15.1.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Програмка эта не на VB а на его далеком предшественнике.
Необходимо, во первых, переписать этот исходник под VB.
У тебя знания о VB позволят это сделать?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Voldemar2004
Дата 15.1.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Пример умножения 2-ух матриц:
Код
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, j As Integer

Cls
Print "Матрица 1:" & vbNewLine

Dim a() As Single

Dim ai As Integer, aj As Integer

ai = InputBox("", "Размерность: число строк 1-ой матрицы")
aj = InputBox("", "Размерность: число столбцов 1-ой матрицы")

MsgBox "Число строк = " & ai & " Число столбцов = " & aj

ReDim a(0 To ai - 1, 0 To aj - 1) As Single

For i = 0 To ai - 1

    For j = 0 To aj - 1
    
    a(i, j) = InputBox("", "Заполните матрицу")
    
        Print "  "; a(i, j);
    
    Next j
    Print

Next i

Print

' ----------------------------------------------------------------
' матрица 2:
Print "Матрица 2:" & vbNewLine
Dim b() As Single
Dim bi As Integer, bj As Integer

bi = InputBox("", "Размерность: число строк 2-ой матрицы")
bj = InputBox("", "Размерность: число столбцов 2-ой матрицы")

If aj = bi Then

         MsgBox "Число строк = " & bi & " Число столбцов = " & bj

Else: MsgBox "Число строк 1-ой матрицы" & vbNewLine & _
         "не равно числу столбцов 2-ой матрицы", vbCritical

Exit Sub

End If


ReDim b(0 To bi - 1, 0 To bj - 1) As Single

For i = 0 To bi - 1

    For j = 0 To bj - 1
    
    b(i, j) = InputBox("", "Заполните матрицу")
    
        Print "  "; b(i, j);
    
    Next j
    Print

Next i

Print

' результат умножения 2-ух матриц:
Dim s As Integer, k As Integer
Dim c() As Single

ReDim c(0 To ai - 1, 0 To aj - 1) As Single

Print "Умножение матриц:" & vbNewLine

For i = 0 To ai - 1
    For j = 0 To bj - 1

        For k = 0 To aj - 1
        
        c(i, j) = c(i, j) + a(i, k) * b(k, j)
        
        Next k
        
        Print "  "; c(i, j);
       
    Next j
    Print
Next i

End Sub
Маринка, вместо INPUT используй
Код
value=InputBox()
. В меню VB6 Tools -> Options на вкладке Editor поставь флаг "Require Variable Declaration" - так будет обязательное объявление переменных, а то они в твоем коде типа Variant, из-за чего скорость работы будет низкая и расход памяти очень большой.

Маринка, тебе надо только глядя на мой пример, заменить для своего случая операторы.
P.S. И не надо пользоваться Goto, а то не понятно, что куда ведет. Для его замены лучше использовать процедуры Sub, If... elseif... end if, Select Case ... End Case.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Akina
Дата 16.1.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Маринка @ 13.1.2006, 18:43 Найти цитируемый пост)

Есть расчетная программа. на VB, которая сделана для работы в DOS'e ! Надо её как-то переделать так, чтобы она работала в виндузе.

Основные твои проблемы: некуда print, неоткуда input.
Замены:
вместо print использовать вывод в caption надписи на форме
вместо input использовать inputbox (для ввода значений) или msgbox (для выбора варианта дальнеших действий).

Расчетная часть будет работать без корректировки.

Цитата(Маринка @ 13.1.2006, 18:43 Найти цитируемый пост)

она почему-то не хочет работать с лазерным принтером

что значит - не хочет? так прямо на экран и выкидывает сообщение "Не хочу работать с лазерным принтером!" ?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Маринка
Дата 18.1.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.12.2003
Где: Иркутск

Репутация: нет
Всего: нет



Ага, понятно..а что там такое Locate ?? Как бороться с этим?
PM MAIL WWW ICQ   Вверх
~FoX~
Дата 18.1.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



Locate - указывает место на экране где будет надпись выводиться - их можешь просто выкинуть.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Маринка
Дата 12.2.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.12.2003
Где: Иркутск

Репутация: нет
Всего: нет



Откуда там берётся значение I ??
Что такое Data ..,.,.,.,.,   ? Как это перевести в нормальный VB, чтоб работало?
PM MAIL WWW ICQ   Вверх
mihanik
Дата 12.2.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Data и Read там используются для определения констант...
Оператор DATA позволяет хранить данные прямо в программме
Read считывает очередные данные из оператора DATA


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JusTalionis
Дата 12.2.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Data - Read в VB6 нет. Придется в ручную присваивать каждое необходимое значение каждому элементу массива при помощи знака равенства.

Цитата(Маринка @  12.2.2007,  11:31 Найти цитируемый пост)
Откуда там берётся значение I ??
I - это счетчик цикла. Его начальное и конечное значения задаются в строке For.

Маринк, а ты, вообще в Бейсике волокёшь? и в VB6 в частности?
Потому что построчно переделывать такой исходник довольно сложно.
Я б рекомендовал поступить так.
Если тебе известна суть работы программы, легче написать ее интерфейс заново - на VB6. А саму формулу вычисления взять из старого исходника (ну с небольшими исправлениями). Вот так.
Потому что идеология интерфейса VB6 (оформление проги, то есть) в VB совсем другая, чем было в DOS.


PM MAIL   Вверх
mihanik
Дата 13.2.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Маринка, прислушайся к тому, что JusTalionis говорит.

Дело, между прочим!



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JusTalionis
Дата 13.2.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



mihanik, я тут посмотрел; если у нее не стоит задача сделать законченную прогу, а только проблема с печатью на лазерке, она может сделать много проще: чуть поправить свой исходник и запускать его под QB.
Там, как я вижу, принтер открывается как файл, может быть поэтому лазерка и не печатает.
Ну-дык, можно легко перенаправить вывод в файл; получится текстовый файл, и его уже распечатать средствами Windows.

PM MAIL   Вверх
Маринка
Дата 13.2.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 5.12.2003
Где: Иркутск

Репутация: нет
Всего: нет



-       I - это счетчик цикла. Его начальное и конечное значения задаются в строке For.


-    это понятно, что счетчик. Не понимаю, где используется это значение, т.е. как оно от пользователя зависит? Когда именно I=1 до 6, а когда I=7 до 11   .... где I узнает программа?
Мне плохо в том смысле, что самих расчетов у меня нет, в этой строительной теме я ничего не понимаю, мне надо-чтоб прога работала в винде и чтоб печатала нормально. С печатью я ещё не разбиралась. А с самой программой- вроде легкая, расчеты не меняются там, а вот с этими I - не понимаю пока. Сделала просто форму одну, где user вводит все данные, нажимает РАСЧЕТ и ..готово..типа. 

Там ещё поля Text - куда вводятся все данные надо мне как-то обозначить переменными что ли..(?) - RY, RX и т.д.  ну с этим я  тоже разберусь, наверное - это тоже из области нетрудного.

Добавлено @ 15:56 
просто попросидли меня помочь - а я что-то вожусь с ней, самой аж стыдно и неудобно, неприятно.
PM MAIL WWW ICQ   Вверх
JusTalionis
Дата 13.2.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: 6
Всего: 17



Цитата(Маринка @  13.2.2007,  15:54 Найти цитируемый пост)
Сделала просто форму одну, где user вводит все данные, нажимает РАСЧЕТ и ..готово..типа. 
Ты молодец, Маринка!
Цитата(Маринка @  13.2.2007,  15:54 Найти цитируемый пост)
Когда именно I=1 до 6, а когда I=7 до 11   .... где I узнает программа?
Автоматически(без участия пользователя) и в прядке расположения фрагментов в программе: здесь - сначала от 1 до 6, затем от 7 до 11, потом от 12 до 17 и далее по тексту.
Весь блок кода с циклами For и DATA - READ - это начальный расклад значений в массивы, то есть инициализация.
В VB инициализации выполняющиеся автоматически при старте программы, надо помещать в процедуру Private Sub Form_Load().
Вызываешь, как обычно, пустую заготовку этой процедуры и пишешь в ней присвоения в ручную всем элементам массивов необходимых начальных значений. Например, начинается:
Код

A(1, 1) = 5
A(1, 2) = 0.5
A(1, 3) = 4.8
A(1, 4) = 11.2
A(1, 5) = 1.42
A(1, 6) = 5.4
A(2, 1) = 6.3
A(2, 2) = 0.5
A(2, 3) = 6.13
    .
    .
    .
A(25, 5) = 6.07
A(25, 6) = 22.7
И так последовательно все значения из строк DATA, друг за другом, так же, как цикл перебирал бы элементы массива. Вместо I, первым индексом массива здесь проставлены значения, которые I последовательно принимала бы в циклах, как нетрудно видеть.
Массив нужно объявить как глобальный: создай модуль, и внутри него объяви.



Это сообщение отредактировал(а) JusTalionis - 13.2.2007, 17:17
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0911 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.