Ошибка компиляции

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Ошибка компиляции

Сообщение XairOn » 07.10.2005 (Пт) 16:42

Здравствуйте господа. такой вопрос у меня: я написал прогу, при запуске из редактора (по F5) она работает превосходно. Компилирую проект. Запускаю созданный EXE'шник вылетакет алерт вот с таким вот текстом: System Error &H800070583 (-2147023485). Класс не существует. Подскажите пожалуйста, как от этой ошибки избавиться, в чем дело? Ведь из VB прога запускается превосходно.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 07.10.2005 (Пт) 17:30

On Windows XP machines compiling a VB 5.0/6.0 project may fail with the following error:
System Error &H80070583 (-2147023485). Class does not exist.
This will happen only if a manifest file is used for VB5.EXE or VB6.EXE and the project or its dependents do not have an explicit reference to COMCTL32.OCX.


Оно, нет?
Быть... или не быть. Вот. В чём вопрос?

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 07.10.2005 (Пт) 17:56

Блин... точно... вот это я ступил коенчно. Ведь была же уже не раз такая ошибка и как я мог забыть что это в манифесте дело. А ты откуда такое описание взял???

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 07.10.2005 (Пт) 18:01

Я думаю что MSDN :wink:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 07.10.2005 (Пт) 19:44

_Мика_ писал(а):Я думаю что MSDN

Странно. В моём MSDN Library April 2004 я описания этой ошибки не нашёл.

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 27.10.2005 (Чт) 16:15

Ну, раз уж тема о проблемах компиляци...
Делаю я сейчас свою игру на VB6, основанную на DX7 . Скомпилировал(компиляция с оптимизированием для быстроты), запускаю exe... и программа зависает в самом начале, хотя при запуске из vb или создании exe без оптимизации все работает. Подскажите, в чем проблема? Да, чуть не забыл - компилировал в школе на компьютере с ОС Windows 2000 клиентской.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3974
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 27.10.2005 (Чт) 16:45

Проект в студию.
char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++)??<cout<<static_cast<char>((out??(i??)??'89));??>cout<<endl;


Изображение

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 27.10.2005 (Чт) 18:06

Весь программный код займет не одну страницу... Щас, соберу по кусочкам с разных дисков... Вот, собрал.
PS: Командный смертельный матч пока не работает. Рекомендую прочесть readme... Так, о чем это я... Так вот, так же виснет и под XP. Причем, я так понял, со вторым сервис паком виснет наглухо, а с первым можно нажать, например, Ctrl + Esc.
Вложения
CUniverse.rar
Common Universe v0.0.37
(1.26 МиБ) Скачиваний: 24
Последний раз редактировалось Drag 03.11.2005 (Чт) 10:10, всего редактировалось 4 раз(а).

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3974
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 28.10.2005 (Пт) 0:10

Не - с "народа", да ещё 2.2 МБ буду качать до завтра. Прикрепи на форум.
char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++)??<cout<<static_cast<char>((out??(i??)??'89));??>cout<<endl;


Изображение

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 02.11.2005 (Ср) 23:54

Ну как, есть идеи насчет такой проблемы?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3974
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 03.11.2005 (Чт) 0:54

Ужас. Весь код в ошибках. И как ты из этого сделал *.EXE?
char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++)??<cout<<static_cast<char>((out??(i??)??'89));??>cout<<endl;


Изображение

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 03.11.2005 (Чт) 10:15

Теперь критических ошибок быть не должно. Кстати, не забудь в Tools -> Options, вкладка General, если стоит Break on all Errors, установи на Break in Class Module. У меня тоже при останове на всех ошибках столько ошибок обнаруживалось...

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 10.11.2005 (Чт) 14:17

У меня такое ощущение, что она не столько виснет, сколько вылетает из Sub Main.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 10.11.2005 (Чт) 14:53

Скомпилированный в pcode работает.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 10.11.2005 (Чт) 14:58

А последняя запись в логе мне понравилась :D
Исправлял иррациональность в программном коде
Лучший способ понять что-то самому — объяснить это другому.

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 10.11.2005 (Чт) 17:20

Antonariy писал(а):Скомпилированный в pcode работает.

Во, во, а в Native - нет. От сервис пака не зависит.

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 04.12.2005 (Вс) 20:20

Нашел ошибку. В процедуре CheckColisions была такая структура:

Goto 3
For ...
...
3:
Next

Visual Basic это не воспринимал как ошибку, а exe-файл понятия не имел, как это так, вот и прекращал работу программы.

basicom
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 20.05.2003 (Вт) 10:10
Откуда: Екатеринбург

Re: Ошибка компиляции

Сообщение basicom » 09.08.2017 (Ср) 14:34

Подниму тему. Прикручивал к старому проекту работу с callback функциями. В vb5 программа работает и в native и p-code. В vb6 только в p-code. В native при вызове функций из dll-ки программа падает. В чем может быть причина?
PS Если вызов callback осуществлялся при работе, то при закрытии программы скомпилированные в vb5 и vb6 в любом коде вызывают крах на последней команде end. Вроде все корректно закрываю и отсоединяюсь. :roll:

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1847
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Ошибка компиляции

Сообщение ger_kar » 09.08.2017 (Ср) 18:17

Ну что тут можно сказать, только одно. Код в студию, хотя бы тот самый проблемный кусок. А так можно сказать только одно, падает оно очевидно потому, что вызов функции или функций осуществляется некорректно. А что конкретно не так не скажет никто, ибо даже непонятно, что за функции, как они задекларированы и как они вызываются. Можно кусочки кода выкладывать, но так чтобы для каждой конкретной функции можно было бы увидеть, как она декларируется и как осуществляется вызов. Если используются структуры, и константы то соответственно и их объявление. Выкладывай код, будем посмотреть. Я думаю проблема вполне разрешима.
Бороться и искать, найти и перепрятать

basicom
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 20.05.2003 (Вт) 10:10
Откуда: Екатеринбург

Re: Ошибка компиляции

Сообщение basicom » 11.08.2017 (Пт) 10:09

Декларация выглядит так:

Код: Выделить всё
Public Declare Function Opendll Lib "SPC_Driver.dll" Alias "Open" (ByVal SetDose_Delegate As Long, _
                          ByVal GetDose_Delegate As Long, _
                          ByVal CancelDose_Delegate As Long, _
                          ByVal HoldPump_Delegate As Long, _
                          ByVal UpdateFillingOver_Delegate As Long, _
                          ByVal InsertCardInfo_Delegate As Long, _
                          ByVal SaveReciept_Delegate As Long, _
                          ByVal SystemName As String, _
                          ByVal ctx As Long) As Byte
Public SystemName As String
Public ctx As Long
Public Declare Function Closedll Lib "SPC_Driver.dll" Alias "Close" () As Long ' çàêðûòèå äðàéâåðà
Public Declare Function SettingsSPCdll Lib "SPC_Driver.dll" Alias "Settings" () As Long 'âûçîâ ôîðìû íàñòðîéêè äðàéâåðà
Public Declare Function ServiceSPCdll Lib "SPC_Driver.dll" Alias "Service" () As Long 'âûçîâ ôîðìû ñåðâèñ
Public Declare Function CloseShiftSPCdll Lib "SPC_Driver.dll" Alias "CloseShift" () As Long ' ôóíêöèÿ çàêðûòèÿ ñìåíû
Public Declare Function FuelPrices Lib "SPC_Driver.dll" (ByVal Fuels As String) As Long 'îïðåäåëåíèå äîñòóïíûõ âèäîâ òîïëèâà ïåðåä íà÷àëîì ðàáîòû äðàéâåðà
Public Declare Function PumpFuels Lib "SPC_Driver.dll" (ByVal PumpsInfo As String) As Long 'ïðèâÿçêà äîñòóïíûõ âèäîâ òîïëèâà ê ïîñòàì
Public Declare Function Descriptiondll Lib "SPC_Driver.dll" Alias "Description" () As String 'îïèñàíèå äðàéâåðà
Public Declare Function FillingOver Lib "SPC_Driver.dll" (ByVal bTransNum As Currency, ByVal bQuantity As Long, ByVal bAmount As Long) As Long 'ôóíêöèÿ çàâåðøåíèÿ íàëèâà, êîòîðàÿ ñîîáùàåò äðàéâåðó êîëè÷åñòâî è ñòîèìîñòü îòïóùåíîãî òîïëèâà è íîìåð
Public Declare Function GetTransactiondll Lib "SPC_Driver.dll" Alias "GetTransaction" (ByVal ID1 As Currency, ByVal Result As Long) As Long 'çàïðîñ ñîñòîÿíèÿ ÒÐÊ äðàéâåðîì
Public Type GetTransactionResult 'îïðåäåëåíèå ñòðóêòóðû äëÿ çàêàçà áåíçóáåðîì
    PumpNo As Long
    PaymentCode As Long
    ProductCode As Long
    OrderMode As Long
    Quantity As Long
    Price As Long
    Amount As Long
    CardNO As String
    OrderRRN As String
End Type
Public getTransRes As GetTransactionResult 'ñòðóêòóðà çàêàçà áåíçóáåðà
Public Type GetPumpStateResponce 'îïðåäåëåíèå ñòðóêòóðû ñîñòîÿíèÿ ÒÐÊ äëÿ îáìåíà ñ äðàéâåðîì
  DispStatus As Byte         '1
  StateFlags As Integer     '2 Integer
  ErrorCode As Long         '4 Long
  DispMode As Byte          '1
  UpNozz As Byte             '1
  UpFuel As Byte              '1
  UpTank As Byte             '1
  TransID As Currency      '8
  'TransID2 As Long      '4
  PreselMode As Byte       '1
  PreselDose As Double    '8
  PreselPice As Double     '8
  PreselFuel As Byte         '1
  PreselFullTank As Byte   '1
  FillingVolume As Double  '8
  FillingPrice As Double     '8
  FillingSum As Double      '8
End Type
Public getPumpSR As GetPumpStateResponce 'ñòðóêòóðà ñîñòîÿíèÿ ÒÐÊ äëÿ îáìåíà ñ äðàéâåðîì
Public Type benSPC
    nGaszuber As Currency
    lTimer As Long
    FlageTrans As Byte '
    bFree As Byte ' 1 - ñâîáîäíà, 0 - çàíÿòà
    PaymentCode As Long
    ProductCode As Long
    OrderMode As Long
    Quantity As Long
    Price As Long
    Amount As Long
    CardNO As String
    OrderRRN As String
End Type


Функции при вызове которых dll-кой возникает крах:

Код: Выделить всё
Public Function SetDose_Delegate(ByVal Pump As Long, ByVal CardType As Long, ByVal ctx As Long) As Currency 'Long
On Error Resume Next
Dim n As Byte
If Pump > 0 Then
    n = Pump - 1
Else
    SetDose_Delegate = -0.0001
End If
If (glOperator > 0) And (gGasStation(n).gdFlagCheck = False) And (gGasStation(n).lStage = 0) And (gbDibitFlag(n) = False) And (gbQueryPurseFlag(n) = False) And (gGasStation(n).gbFlagLock = False) Then
    Zuber(n).bFree = 0 '
    SetDose_Delegate = nBenzuber '
    Zuber(n).FlageTrans = 2 '
    Zuber(n).lTimer = timeGetTime '
    Zuber(n).nGaszuber = nBenzuber
End If
End Function



Открытие нормально проходит:
Код: Выделить всё
Public Sub BenzOpen() 'ïîäêëþ÷àåì äðàéâåð
'SystemName = "Pack=4;DumpMemory;" 'äëÿ ëîãîâ ñòðóêòóðû
SystemName = "Pack=4;"
Dim b As Byte
b = Opendll(AddressOf SetDose_Delegate, _
                   AddressOf GetDose_Delegate, _
                   AddressOf CancelDose_Delegate, _
                   AddressOf HoldPump_Delegate, _
                   AddressOf UpdateFillingOver_Delegate, _
                   AddressOf InsertCardInfo_Delegate, _
                   AddressOf SaveReciept_Delegate, _
                   SystemName, ctx)
                   
Debug.Print "open dll" & CStr(b)
nBenzuber = 0 'äëÿ äðàéâåðà 1=10000, 2=20000
End Sub

Teranas
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 13.12.2008 (Сб) 4:26
Откуда: Новосибирск

Re: Ошибка компиляции

Сообщение Teranas » 16.08.2017 (Ср) 0:01

Drag
Автору надо взяться за проект попроще.
1) Option Explicit надо использовать везде и во всех модулях и классах и формах, это в разы снизит количество ошибок
2) Переходы по меткам - дурная привычка, от неё надо избавляться и чем раньше - тем лучше, для выхода из циклов есть Exit For и Exit Do
3) Что-то мне подсказывает, что это код не ваш, но вы хотите его довести до ума, это хорошо...
С уважением, Андрей.

basicom
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 20.05.2003 (Вт) 10:10
Откуда: Екатеринбург

Re: Ошибка компиляции

Сообщение basicom » 16.08.2017 (Ср) 14:16

Teranas писал(а):Drag
Автору надо взяться за проект попроще.
1) Option Explicit надо использовать везде и во всех модулях и классах и формах, это в разы снизит количество ошибок
2) Переходы по меткам - дурная привычка, от неё надо избавляться и чем раньше - тем лучше, для выхода из циклов есть Exit For и Exit Do
3) Что-то мне подсказывает, что это код не ваш, но вы хотите его довести до ума, это хорошо...


Программист из меня не ахти, это точно. Проект веду ещё с 2001 года дописывая по необходимости разные кусочки.
Option Explicit прописан во всех модулях, но иногда и это не помогает, VB может совершать чудеса :D
Весь код был написан на VB4 с включением библиотек из 5 и 6 версии, но в связи с необходимостью пользоваться калбэками пришлось компилировать в vb6.
Подскажите куда копать. При переходе с vb4 на vb5 возникала проблема с отображением компонентов, но при обновлении до vb6 проблема отпала. Появилась другая - крах при закрытии программы.
На работоспособность это не влияет, так как программа работает 24/7, но выглядит коряво при необходимости перезагрузить машину.

Немного подробностей.
Скомпилированный в P-code exe-шник при закрытии программы в 7ке 64 бита падает с ошибкой APPCRASH
При этом в 7ке 32 битной закрывается нормально.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 6

    TopList