Hei.
Haluaisin päästä eroon vanhasta VB5:stä ja keskittyä Visual Basic 2008 expressiin.
Ongelma on, että VB5:en exet haluavat toimiakseen mystisen ocx-tiedoston. Pitäisi saada vanhat VB5-ohjelmat toimimaan itsenäisesti ilman mitään ocx-tiedostoa.
Kokeilin etsiä vanhaa viestiä aiheesta, löytyi sellainen, että hommaan tarvitsee IE-selaimen. Minulla ei toimi.
Mikä osa ohjelmassasi vaatii ocx-tiedoston? Ainoa ratkaisu on yrittää toteuttaa kyseinen osa toisella tavalla ilman ocx-tiedostoa.
En kuitenkaan ymmärrä, miten tämä liittyy VB 2008:n käyttöön.
Tarkoituksenani on hyljätä vanha VB5 ja käyttää sen sijaan VB 2008:aa.
VB 2008:lla ei voi ladata VB5:n VBP-tiedostoja, minkä vuoksi tarvitsen exe:t vanhoista VB5-ohjelmista.
Testasin erästä toista VB5-ohjelmaa, tämä toimi ilman ocx:ää. Murheen kryyni on iso monen formin sovellus. Ei auta kun tutkia, mikä on siinä ocx:n vaatimaa osa.
En tunne vanhan VB:n toimintaa, mutta eikö tarvittavia ocx-tiedostoja voi vain toimittaa ohjelman mukana?
Löytyi oikea OCX (COMDLG32.ocx). Muistelinkin, että käytin commondialogia tiedostojen lataamisen yhteydessä.
Se tässä ohjelmassa on vielä onglemana, että Run/Start toimii, mutta exen tekemisessä kääntäjä jumiutuu (onni onnettomuudessa, että olen tehnyt
vanhoja käyttökelpoisia exejä).
Hieman ihmettelen tätä väitettä, että VB2008:lla ei voi ladata VB5:n VBP-tiedostoja. Ainakin VB2005 Express editionilla juuri latasin VB6:n VBP-tiedoston, jolloin se raakakonvertoi projektin VB.Net muotoon.
Tosin voihan olla, että se VB5-kikkare pitäisi ensin päivittää VB6-muotoon tai sitten VB2008 ei oikeasti enää tukisi moista. Kumpikin tuntuisi hieman oudolta.
Esimerkiksi kokeilin tuota "seikkailupeliäni" ladata VB2005 Expresiin ja hyvin toimi. Pari ByRef-kohtaa vaan piti muuttaa ByValeiksi.
Tämmöstä tulee, kun lataan VB2008:lla VB5:n VBP-tiedoston:
Type=Exe
...
...
Reference=*\G{00020430-0000-0000-C000-000000000046}
#2.0#0#..\..\..\..\..\..\..\WINDOWS\system32\
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.1#0; COMDLG32.OCX
IconForm="Form1"
Startup="Form1"
HelpFile=""
ExeName32="PBDesigner.exe"
...
...
...
Command32=""
Name="PBDesigner"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
Reference=*\G{00020430-0000-0000-C000-000000000046}
#2.0#0#..\..\..\..\..\..\..\WINDOWS\system32\
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.1#0; COMDLG32.OCX
IconForm="Form1"
Startup="Form1"
HelpFile=""
ExeName32="PBDesigner.exe"
...
...
...
Eikä siis VBP:tä tämän paremmin saa auki -- tai sitten en tiedä keinoa.
Ja "Open Project" valitsit, etkä esim "Open File" ?
Se oli Open File -- klickasin sitä kansio auki -ikonia.
Päivittämisestä VB2008:aan kone puhuu VB6:sta, vaikka menossa oli VB5-tiedosto.
Virheitä kevyehkössä ohjelmassa käynnistäessä oli 102, sitten tuli jokun "stop"-merkki jostain tiedosto seikasta.
Juuh, no se tosiaan tekee raakakäännöksen. Mitä monimutkaisempi projekti, sitä enemmän käsin korjattavaa. Ja tietty riippuu paljon, mitä tekniikoita on käyttänyt. Toiset kääntyy siistimmin kuin toiset.
Moikka Marcus!
Kiitoksia! Näyttää pätevältä. Tutkailen huomenna lisää.
En saanut päivitystä VB5:n pohjalta.
Joissakin tiedostoissa tuli (viittaan yo linkkiin) installation corruput.
VB2008 pyrkii käsittelemään VB5-tiedostot VB6-tiedostoina, mikä
ei toimi.
Ilmeisesti VB6 on lähempänä VB2005 ja VB 2008:aa.
VB5 ja VB6 on käytännössä kumpikin yhtä kaukana .Net-maailmasta, mutta nuo päivityswizardit on ilmeisesti tehty ymmärtämään VB6:sta (koska varmaankin jo vuonna 2001 ajateltiin, ettei kukaan enää käytä VB5:sta)
VB4:n vielä tavallaan ymmärtää, kun sillä pystyi tekemään sekä 16- että 32-bittisiä sovelluksia, mutta VB5 oli välimalli josta käytännössä kaikki vaihtoi VB6:een jo vuoden 1998 tienoilla.
Itse varmaan joko:
- päivittäisin koodin ensin VB6:ksi (Nea laittoikin linkin, jossa oli jotain työkaluja siihen)
tai
- kirjoittaisin koodin suoraan uusiksi VB2008:lle tai C#2008:lle.
Tietty kolmas vaihtoehto on kirjoittaa kokonaan jollain MS-riippumattomalla kielellä.
Moikka taa Marcus!
Kirjoittelit muunmuassa, että: "En saanut päivitystä VB5:n pohjalta.
Joissakin tiedostoissa tuli (viittaan yo linkkiin) installation corruput..."
Avaa projektitiedosto (.vbp) ja tsekkaa mihin referenssien polut viittaavat (Reference=...). Elikä näkyvillä ompi GUID & polku\tiedostonimi.ext... jotenka jos ko. tiedostoa ei löydy viitatusta hakemistosta tai koko hakemistoa ei ole olemassa niin tsekkaa rekisteristä komponentin tiedostonimellä ja jos löytyy niin muotoile vastaamaan rekisteriarvoja...
Elikäs tämä alla oleva viittaa nyt taaksepäin juureen siitä hakemistosta, jossa projekti on luotu...
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\..\
eli sen voi surutta muokata muotoon:
Reference=*\G{00020430-0000-0000-C000-000000000046}
#2.0#0C:\WINDOWS\system32\stdole2.tlb#OLE Automation
tämä allaoleva pätkä viittaa tyyppikirjastoon (TypeLib)
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}
ja numero/risuaita viittaa versioon...
#1.1#0; COMDLG32.OCX
elikä jos toi polkumäärityksen muokkaus ei auta niin VB.NET jämähtää versionumeroon, ja vaatii ehkä uudemman...pelkkä versionumeron käpistely käsin rekisterissä ei auta, mutta voisit impata täältä päivityksen...
Taitaa olla vaivattominta kuljettaa ocx:ää mukana. Se tietysti haittaa, että VB2008:lla täytyisi aloittaa sovellukset alusta, tai no sen verran mikä ei copy-pastella onnistu.
Tuo päivitys ei auttanut. (sain taas 102 virhettä)
Microsoftin sivuilta ei löydy käytännössä mitään VB5:stä -- VB6:sta löytyykin sitten senkin edestä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.