[GWbasic] omzetten naar windows

Pagina: 1
Acties:
  • 406 views sinds 30-01-2008
  • Reageer

  • FiscBiker
  • Registratie: April 2003
  • Nu online
Hallo!

Wij gebruiken regelmatig nog een programma onder GWbasic. (zelf geschreven) Printen vanuit de DOS-emulator van W2k gaat nog net op een HP670c, maar die begint kuren te krijgen. Nieuwere printers willen absoluut niet printen vanuit GWbasic onder W2k's DOS-emulator.

Het programmaatje moet dus overgezet worden naar een moderne programmeertaal onder windows (Op het moment maakt het me nog niet zoveel uit welk).

Ik heb de listing al wel omgezet naar ASCII zodat hij geknipt en geplakt kan worden, maar wie helpt me verder?

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Oej GW-Basic is wel erg oud. In principe zou je het programma dan het beste kunnen porten naar VB wat qua syntax nog enigszins overeenkomt.

Tevens zal je ook regelnummers moeten verwijderen. Maar ik voorspel zo dat er nog een heleboel GOTO's in het programma voorkomen zoals dat de stijl was in GW-Basic.

Wat voor commando's gebruik je zo allemaal?
Ik denk overigens dat je met een rewrite van het programma sneller klaar bent dan alles proberen te converteren ;)

It’s nice to be important but it’s more important to be nice


  • FiscBiker
  • Registratie: April 2003
  • Nu online
Inderdaad veel goto's
for next en het wegschrijven in bestanden
het is een facturen programma

[ Voor 7% gewijzigd door FiscBiker op 29-04-2003 20:08 ]


  • whoami
  • Registratie: December 2000
  • Nu online
Ik denk dat JonkieXL wel een punt heeft als hij zegt dat een rewrite beter zal zijn dan alles te converteren.

Voor facturatieprogramma's en administratieve programma's is Delphi wel een goeie tool/taal om je applicatie in te ontwikkelen. Object Pascal is een duidelijke en krachtige OO taal, en met Delphi kan je makkelijk een connectie leggen met een databank.
VB (Visual Basic 6 dan), zou ik echter niet gebruiken. Die taal zal volledig vervangen worden door C# en VB.NET. (Die 2 zijn ook goede opties).

Let wel, je zult ook moeten objectgeorienteerd en event-driven moeten leren proggen. Als je daar nog geen ervaring in hebt, kan dat nogal een groot struikelblok worden...

https://fgheysels.github.io/


Verwijderd

Heb je al een keer geprobeerd om deze gw-basic regels 1 op 1 naar QuickBasic over te zetten en te compileren?
(QuickBasic is ook oud, maar op mijn xp werkt het, ik weet alleen niet of je dan kan printen)

[ Voor 34% gewijzigd door Verwijderd op 29-04-2003 20:27 ]


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Verwijderd schreef op 29 April 2003 @ 20:19:
Heb je al een keer geprobeerd om deze gw-basic regels 1 op 1 naar QuickBasic over te zetten en te compileren?
(QuickBasic is ook oud, maar op mijn xp werkt het, ik weet alleen niet of je dan kan printen)
In Quickbasic maak je net als GW-Basic nog gewoon DOS applicaties. Behalve dan dat Quickbasic een compiler heeft en GW-Basic geinterpretteerd wordt.
Als je het toch goed wil aanpakken zou ik de boel omzetten naar een OOP Windows taal.

Is er documentatie over de werking van het programma aanwezig? (wat ik trouwens niet verwacht voor een oud GW-Basic programma >:) )

It’s nice to be important but it’s more important to be nice


Verwijderd

En wat ik me nu inees afvraag, ligt het niet gewoon aan de printer (driver)
Lijkt wel of die "gaat nog net op een HP670c" wel met dos tekst overweg kan en andere printers niet ??
(misschien een einde pagina probleem? ^L )

[ Voor 15% gewijzigd door Verwijderd op 29-04-2003 20:30 ]


  • FiscBiker
  • Registratie: April 2003
  • Nu online
nee het probleem is bekend bij hp boven de 700 serie werken de drivers niet meer
ik ben haast genoodzaakt tot rewriten
en dan te bedenken dat ik met apple basic begon
moet ik toch weer een nieuwe taal leren pfiew

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Als het een GW-Basic applicatie is zal deze gewoon met het LPRINT commando naar de LPT1 printen. Dan print je buiten de Windows printerdriver om.

Ik heb overigens zelf ook met een oude versie van DBASE voor DOS problemen gezien met printen onder Windows.
Als je echter de App naar een Windows App converteert kan je gewoon printen via de Windows driver wat je een hoop ellende zal besparen.

[ Voor 4% gewijzigd door pjonk op 29-04-2003 20:40 ]

It’s nice to be important but it’s more important to be nice


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

JonkieXL schreef op 29 april 2003 @ 20:38:
Dan print je buiten de Windows printerdriver om.
Reken er maar niet op dat Win2k je vrije toegang geeft tot de LPT-poort hoor! :Y)

Siditamentis astuentis pactum.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Als het goed is zal je code, inclusief regelnummers en goto's, prima werken in Visual Basic (met enige aanpassingen, je zal een Sub Main() moeten maken en daar (bijna) al je code inplakken).

Printen naar LPT1: gaat vanuit Visual Basic ook gewoon prima en is op matrixprinters ongeveer 1000x sneller dan de Windows printfuncties gebruiken, die overigens een complete rewrite zouden vereisen, want een regeltje printen is dan dus niet zo eenvoudig meer.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Ik zou je willen adviseren om dit in visual basic 6 te doen. De GW basic taal is voor een heel groot deel over te zetten naar VB6 zonder wijzigingen, voorbeeld:

10 A = A + 1
20 Debug.Print "Hallo " + Str(A)
30 If A >= 10 Then GoTo 50
40 GoTo 10
50 Debug.Print "Klaar."

Dit (regelnummers) werkt dus. VB6 kent zelfs nog een ongedocumenteerde ERL functie, die het regelnummer van een fout terug geeft, voorbeeld:

10 On Error GoTo 40
20 A = B / 0
30 End
40 Debug.Print Erl '--Geeft dus 20.

Hierbij wil ik nog wel even zeggen dat dit niet de meest frisse manier is van programeren. De debug.print die ik in de bovenstaande voorbeelden gebruik werkt alleen maar in de debug omgeving. De manier zoals je met de user interface omging in GW basic in nogal anders dan dat je dat in VB6 doet. Ik verwacht dat je daar het meeste werk aan hebt, voor het printen zijn er manieren om ruwe data te kunnen printen. Vanuit GW basic stuur je waarschijnlijk ook escape-codes, FFs, etc. naar de printer. Dit werkt niet zonder meer met het VB6 printer object, maar met wat zg. API-calls kun je dit netjes oplossen.

Van een aantal mensen las ik dat ze juist aanraden om over te gaan naar VB.NET, maar in dit geval zou je dat meer werk opleveren, omdat VB6 meer compatible is. Juist omdat VB.NET behoorlijk anders is dan VB6 zullen er nog lange tijd veel actieve gebruikers voor deze taal zijn. Niet iedereen is zo gecharmeerd van het nieuwe .NET platform. Veel standaardproblemen (zoals printen van ruwe data) zijn al voor VB6 opgelost en deze oplossing kun je vinden op vele sites (www.freevbcode.com etc..). Ook .NET bestaat ook al geruime tijd en daar zijn dus ook de nodige rescources voor te vinden, maar voor VB6 is er meer. Als je het programma in VB6 hebt heb je ook de ruimte om het aan te passen en te verbeteren. Wanneer je een goed geschreven VB6 programma hebt, is de conversie naar VB.NET ook eenvoudig.

  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op 29 april 2003 @ 21:28:
Wanneer je een goed geschreven VB6 programma hebt, is de conversie naar VB.NET ook eenvoudig.
Dat vind ik kwatsch, en ik kan er dus niet mee akkoord gaan. :)

VB.NET is volledig OO; VB6 is niet OO.
Heel wat code die in VB6 werkt, zal niet zomaar werken in VB.NET. Wat zeg ik heel wat? Bijna alles.
Het enige wat VB.NET nog meeheeft van VB6 is hier en daar wat gelijkenissen in de syntax.

https://fgheysels.github.io/


Verwijderd

whoami schreef op 29 April 2003 @ 21:32:
[...]


Dat vind ik kwatsch, en ik kan er dus niet mee akkoord gaan. :)

VB.NET is volledig OO; VB6 is niet OO.
Heel wat code die in VB6 werkt, zal niet zomaar werken in VB.NET. Wat zeg ik heel wat? Bijna alles.
Het enige wat VB.NET nog meeheeft van VB6 is hier en daar wat gelijkenissen in de syntax.
Dat is niet helemaal waar. VB is niet geheel OO, maar ondersteund toch wel redelijk wat. Dus NIET vind ik wat grof gesteld. Dat VB.NET OO ondersteund, betekend niet dat het moet. Ik heb de ervaring dat veel code met de meegeleverde upgrade wizard zonder problemen worden overgezet naar VB.NET. Copy/Paste zal niet werken (als dat hetgeen is wat je bedoeld.).

Wat is dat met dat heilige OO? Lang niet in alle gevallen is dat beter.

  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op 29 April 2003 @ 21:46:
[...]


Dat is niet helemaal waar. VB is niet geheel OO, maar ondersteund toch wel redelijk wat.
Dus NIET vind ik wat grof gesteld.
Tja, wat dacht je van inheritance, polymorphisme, .... Dat zijn allemaal dingen die niet mogelijk zijn in VB6
Dat VB.NET OO ondersteund, betekend niet dat het moet.
VB.NET ondersteund niet alleen OO, VB.NET is OO.
Probeer eens een console applicatie te maken in VB.NET zonder gebruik te maken van ook maar één class....
Wat is dat met dat heilige OO? Lang niet in alle gevallen is dat beter.
Dat zeg ik ook niet.... (Alhoewel OO software die goed opgezet is toch heel wat onderhoudbaardere en herbruikbare code oplevert.)
Ik zei enkel maar dat VB6 totaal niet te vergelijken is met VB.NET.

https://fgheysels.github.io/


  • FiscBiker
  • Registratie: April 2003
  • Nu online
Om even min of meer ontopic terug te komen:

Ik heb een utility gevonden dat als brug werkt tussen DOS en de windows-printer. We kunnen dus toch GWbasic blijven gebruiken onder welke windows dan ook. De shareware-versie doet het in ieder geval met die printer die eerst absoluut geen kik wou geven onder W2k

www.dosprn.com staat het, voor de zoekers van de toekomst

Verwijderd

whoami schreef op 29 april 2003 @ 21:50:
Tja, wat dacht je van inheritance, polymorphisme, .... Dat zijn allemaal dingen die niet mogelijk zijn in VB6. VB.NET ondersteund niet alleen OO, VB.NET is OO.
Probeer eens een console applicatie te maken in VB.NET zonder gebruik te maken van ook maar één class....
Mee eens. Je gebruikt het dan meer om library-functionaliteit te verkrijgen (zoals units in pascal). Je hoeft niet per definitie je eigen code op te hakken in OO classes.
whoami schreef op 29 april 2003 @ 21:50:
Dat zeg ik ook niet.... (Alhoewel OO software die goed opgezet is toch heel wat onderhoudbaardere en herbruikbare code oplevert.)
Ik zei enkel maar dat VB6 totaal niet te vergelijken is met VB.NET.
Weer mee eens. Multi-threading en Exception-cathing :) en je mag nu een in plaats van de 1MB runtime een 25MB framework meeleveren. :( ...

Verwijderd

FiscBiker schreef op 29 april 2003 @ 22:21:We kunnen dus toch GWbasic blijven gebruiken onder welke windows dan ook. De shareware-versie doet het in ieder geval met die printer die eerst absoluut geen kik wou geven onder W2k
Misschien is dit wel een goed moment om eens na te denken hoe je verder gaat. Ik kan me voorstellen dat je niet wilt dat je bedrijf afhankelijk is van een GWbasic applicatie die bij gratie van een shareware programma nog aan de gang kunt houden.

Succes.

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 16:05

Reptile209

- gers -

Om aan te sluiten bij TriRec: hoe groot is het programma ongeveer en wat is er aan documentatie? Dan kunnen we hier misschien een al dan niet gefundeerde schatting maken hoe veel werk het zou zijn om het om te zetten naar een wat geavanceerdere omgeving :)

Zo scherp als een voetbal!


  • FiscBiker
  • Registratie: April 2003
  • Nu online
Met alle respect voor jullie jeukende vingertoppen, maar we hebben het over een eenmansbedrijf dat binnen nu en 10 jaar geen facturen meer zal maken (AOW). En dan hebben we nu voor 13 euro toch een mooie oplossing als je het mij vraagt.

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 16:05

Reptile209

- gers -

Ok, goed punt :P.
* Reptile209 zat even te mijmeren over de goede, oude tijd van GWBasic & friends... :9~

Zo scherp als een voetbal!


  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op 29 april 2003 @ 22:45:
[...]


Mee eens. Je gebruikt het dan meer om library-functionaliteit te verkrijgen (zoals units in pascal). Je hoeft niet per definitie je eigen code op te hakken in OO classes.
Je hoeft idd niet, maar waarom zou je het niet doen?
Waarom zou je het nalaten om de data zo te abstraheren? Waarom zou je bij elkaar horende gegevens (bv: persoon, factuur, oid) niet bij elkaar gaan gaan groeperen en die gegevens te gaan 'hiden' en abstraheren?

Dat is net het probleem waar veel Delphi programmeurs ook mee te kampen hebben: Ze hebben zo een mooie omgeving tot hun beschikking en ze gebruiken de kracht er niet van. Ze gaan er mee om als een VB6 programmeur zou doen.
Geen gebruik makend van alle mogelijkheden die leiden tot robustere, onderhoudbaardere en betrouwbaardere software.
Weer mee eens. Multi-threading en Exception-cathing :) en je mag nu een in plaats van de 1MB runtime een 25MB framework meeleveren. :( ...
Dat valt wel mee als je ziet wat dat framework allemaal niet voor je doet.
Dit zal trouwens in de nabije toekomst standaard in Windows zitten, zodanig dat je niks meer moet meeleveren.

https://fgheysels.github.io/


Verwijderd

De oplossing voor je printerprobleem:

1) share je printer
2) net use je printer op een poort.. bv. werkstation WRK01, printer PRN01: net use LPT2 \\WRK01\PRN01
3) laat je gwbasic progje printen naar LPT2

Werkt perfect, onder alle windows versies. Wordt ook gebruikt om bv. exact voor DOS te laten printen onder 2K/XP
Pagina: 1