Home De PowerBASIC Gazette #10 in het Nederlands De PowerBASIC Gazette #24 in het Nederlands De PowerBASIC Gazette #25 in het Nederlands

PowerBASIC Gazette #10 (Nederlands)

Wie is er bang voor een DLL?

------------------------------------------

Door Eric Pearson

Vertaald door Henk Broekhuizen (algemene opmerkingen over vertalen)

 

Toen ik voor het eerst begon met verschuiven van DOS naar Windows programmeren was de term 'DLL' erg intimiderend. Maar toen ik meer ervan leerde en wat ze mijn programma's konden betekenen werd het mysterie, en mijn angst ervoor, kleiner en kleiner. Nu zijn ze geworden tot een absoluut onmisbaar deel van mijn Windows programmeer-gereedschappen, en ze behoren dat ook voor u te zijn.

Alleen aangeven dat 'DLL' een afkorting is van 'Dynamic Link Library' ('dynamische linkende bibliotheek') helpt niet veel. Het laatste woord -bibliotheek- is verreweg het belangrijkst.

Belangrijk punt 1: Een DLL is eenvoudigweg een bestand dat één of meer voor-gecompileerde functies bevat. Ik was wel bekend met voorcompileren van PB/DOS functies naar Unit bestanden, maar DLLs brengen het bibliotheek-idee nog een paar stappen verder. Een aantal erg krachtige stappen!

Belangrijk punt 2: DLLs zijn de snelste, meest compacte en meest efficiënte vorm van een Windows bibliotheek bestand. Het Microsoft Windows besturingssysteem zelf is bijna geheel gebaseerd op DLLs! In feite vertrouwen Windows 98 en 2000 op meer systeem DLLs dan ooit tevoren. Als u rauwe, superefficiënte rekenkracht wil verdoet u waarschijnlijk uw tijd met ActiveX, OLE, COM, OCX en al die andere drie-letter-afkortingen. Ze vertrouwen alle op DLL technologie 'onder de motorkap', dus zullen nooit efficiënter worden dan DLL direct gebruiken.

Belangrijk punt 3: Uw PowerBASIC PB/CC en PB/DLL programma's kunnen DLLs gebruiken die vrijwel elke andere Windows compiler zijn gemaakt, net alsof ze met PowerBASIC zijn gecompileerd. Dat houdt in dat duizenden en duizenden aan geavanceerde, grondig veldgeteste functies meteen beschikbaar zijn voor gebruik in uw PowerBASIC programma's.

Belangrijk punt 4: Als u PowerBASIC gebruikt om een DLL te maken kan vrijwel elke computertaal die gebruiken. De DLLs die u maakt met PB/DLL kunt u gebruiken met Visual Basic, C++, Delphi enzovoort. DLLs zijn dé standaard die vrijwel iedereen ondersteunt. En vele programma's gebruiken ook DLLs om uitgebreide functies te bieden.

Belangrijk punt 5: Er is niets magisch -of moeilijks- aan het gebruik van een functie in een DLL. U gebruikt eenvoudigweg het PowerBASIC DECLARE commando om de compiler te vertellen dat een bepaalde functie zich in een bepaald DLL-bestand bevindt. Daarna kunt u de functie gebruiken als was het een onderdeel van PowerBASIC zelf. Als u de DECLARE commando's in een #INCLUDE bestand zet, is het nèt alsof u een bestand gebruikt met de broncode voor de functies zelf.

Belangrijk punt 6: DLLs besparen schijfruimte, beperken laadtijden en verminderen download-tijden. De eerste twee woorden van 'Dynamic Link Library' beschrijven een ander zeer krachtig aspect van de DLLs. Uw programma verwijst naar de bestanden tijdens uitvoering, niet tijdens het compileren. Als een bestand wordt uigevoerd ('gerund') ziet een EXE bestand het DLL bestand als een deel van het eigen bestand, ondanks dat het een apart bestand is. Dat houdt in dat als u een DLL heeft met één of meer veelzijdige functies gebruikt er meerdere programma's met één kopie van het DLL bestand kunnen volstaan.

Dit kan resulteren in aanzienlijk kleinere programma's, hetgeen vooral belangrijk is als u programma's voor downloaden via internet maakt.

Belangrijk punt 7: DLLs zijn geheugenefficiënt. Als twee of meer programma's een bepaalde DLL gebruiken, zal slechts één kopie van het DLL bestand daadwerkelijk in het geheugen worden opgeslagen. Elk programma heeft zijn eigen set van DLL variabelen, en ze nemen elk een klein beetje geheugen, maar het DLL bestand wordt maar eenmaal geladen.

Belangrijke regel 8: DLLs bieden krachtige nieuwe 'variabele blik' variabelenmogelijkheden. U bent waarschijnlijk bekend met PowerBASIC's GLOBAL, LOCAL en STATIC variabelen. GLOBAL variabelen zijn voor elke SUB en FUNCTION zichtbaar. LOCAL en STATIC variabelen zijn echter alleen zichtbaar in de betreffende SUB en FUNCTION routines. Nou, DLLs voegen een geheel nieuw gebied van 'variabele blik' toe aan uw programma's. De variabelen in een DLL zijn volledig gescheiden van uw programma, waardoor de GLOBAL variabelen in een DLL echt gedsoleerde 'module niveau' variabelen zijn die niet door andere delen van uw programma's kunnen worden gezien.

Belangrijke regel 9: Beheer van DLL bestanden hoeven geen nachtmerrie te zijn! We hebben allemaal gehoord over DLLs die foutief versies van oudere DLL bestanden vervingen, waarna bepaalde programma's vastliepen omdat de verkeerde versie van een DLL was gednstalleerd. Vrijwel 100% van deze problemen kunnen worden voorkomen als u eenvoudigweg uw programma's DLL bestanden in de directory van uw programma zet. Als u ze in de Windows SYSTEM directory zet, is dit vragen om problemen. Maar de EERSTE plaats waar Windows voor DLLS zal kijken, is de directory waar ook het programma staat, dus zet ze daar neer en voorkom al deze hoofdbrekens.

Belangrijke regel 10 is dat er zeer veel andere belangrijke punten zijn! Zodra u begint met ze te gebruiken zult u zien dat DLLs vele verschillende subtiele voordelen hebben.

Hoe meer u DLL bestanden gebruikt, hoe meer voordelen zult u vinden. En hoe krachtiger zal uw PowerBASIC programma's worden.

-------------------------------------------

En nu een kort bericht van de sponsor:

Eric Pearson is de directeur van Perfect Sync, Inc. Perfect Sync biedt DLL-gebaseerde ontwikkel gereedschappen voor PowerBASIC programmeurs, zoals SQL gereedschappen, Grafische gereedschappen en Console gereedschappen.

Voor meer informatie over hoe DLL-gebaseerde ontwikkelgereedschappen meer Power aan uw PowerBASIC programma's kan geven, bezoek

http://perfectsync.com/DevelopmentTools.htm.

-----------------------------------------------

En natuurlijk is het andere nieuws heet van de naald PB/CC 2 en PB/DLL 6! Onze belangrijkeste upgrades tot nu toe…..

Natuurlijk is PB/CC onze console compiler - met een tekst mode interface naar 32-bit Windows. PB/DLL is georiënteerd naar een grafisch gebruikers interface, en met DDT, zult u niet geloven hoe eenvoudig het is om GUI (grafische gebruikers interfaces) te ontwikkelen.

PB/DLL 6 bevat DDT:

======================================

DDT: Dynamic Dialog Tools ™ …. Met DDT bouwt u eenvoudiger dan ooit uw complete GUI applicaties. Wostel niet met formulier-ontwerpers. Vecht niet met resource-scripts. Verdwaal niet in een zee van API aanroepen! Met PB/DLLs DDT zullen een paar simpele Basic commando's een compleet grafisch gebruikers interface bouwen!

DIALOG NEW creëert een lege dialoogbox. CONTROL ADD plaatst knoppen, frames, iconen, bitmap-plaatjes, combo-boxen, labels, list-boxen, tekst/editeer boxen, en zelfs eigen besturingsknoppen en meer. Voeg menu's toe. Laat ze zien met DIALOG SHOW. Het is echt zo eenvoudig! Misschien nog wel het beste: DDT is dynamisch. Verander de dialogen en besturingen met een pink. Verander dee grootte, plaats op het scherm en opmaak zoals u wilt. Met DDT leggen we de POWER in uw handen. En da's precies waar deze hoort!

PB/CC bevat Console en Standaard I/O:

=======================================

Doe nog meer met het console. In PB/CC verandert u met één commando de windows-grootte. Maak het klein - 10 regels met 10 kolommen? Maak het groot, zelfs groter dan het fysieke scherm! Verander de console naam naar een naam van uw keuze, of gebruik CONSNAME$() om de huidige titel op te vragen.

Heeft u ooit een 32-bit DOS-stijl compiler gewenst? Eén met een normaal DOS interface maat met megabytes en megabytes aan geheugen? Hier is -ie. De PowerBASIC Console Compiler for Windows. Met PB/CC beschikt u over een hele nieuwe Windows! Tekst mode applicaties voor Windows 95/98 en Windows NT.

De console is een tekst mode interface dat rechtstreeks is verbonden met het hart van 32-bit Windows. Met een console applicatie is er geen vulling, geen geanimeerde popjes, slechts heftige rekenkracht. Zet vandaag nog bestaande Basic code van DOS naar Windows om.

PB/CC ondersteunt de commando's PRINT, LOCATE, LINE INPUT, INKEY$, COLOR, CLS, INSTAT, SCREEN, en LPRINT. Al die standaard tekstmode commando's. Verder voegden we toe: CURSOR, INSHIFT, PAGE, PCOPY, WAITKEY$ en WAITSTAT. Een complete set van muis-besturing. SCROLL elk gedeelte van het scherm naar elke richting. Verander de grootte van de console (maak het 10 regels van 10 characters, of maak het enorm). U kunt zelfs de titel van de console veranderen of opvragen.

Zei u internet? Creëer CGI toepassingen voor uw web-server! Het is het perfecte gereedschap. PB/CC biedt standaard Input & Output voor eenvoudige communicatie. Zelfstandige executables (uitvoerbare bestanden; .EXE bestanden) klein als 10k. Zodra uw programma namen opzoekt, of een hypotheek berekent, kan het data uit een web-bladzijde halen, deze verwerken en de resultaten direct aan de browser van een verre eindgebruiker leveren.

Beide nieuwe compilers bieden:

=======================================

Cliënt/server netwerk communicatie, TCP/UDP ondersteuning is ingebouwd. Communiceer met een TCP server op het internet of uw eigen lokale intranet. Verstuur een email bericht met slechts een paar regels code. Download een web-pagina of bestand in seconden, U zult zelfs de source-code ontvangen van een complete HTTP-server! Gebruik het vandaag nog om uw eigen web-bladzijden op het internet te zetten.

High speed seriële communicatie. Als u met een andere computer moet communiceren, of met een modem of serieel apparaat dan is hier meteen de oplossing. Een compleet Communicatie pakket voor binaire of tekstmode communicatie. Handel eenvoudigweg meerdere poorten af met een totale besturing van de datastroom, buffers en parameters.

Zoek en vervang met de krachtigste string-machine die u ooit zal vinden. Natuurlijk is het bliksemsnel, en de complete implementatie staat tot 99 mee-neem velden toe (die dus meegenomen worden). Zoek om woorden met verschillende spelwijzen. Destilleer internet adressen, herschik de opmaak van financiële tegoeden, en meer, met een eenvoudig zoek en vervang masker.

Ondersteuning van grote bestanden. Vergeet de oude 2 Gigabyte grens. Met PowerBASIC is dat verleden tijd. Afhankelijk van de ondersteuning gegeven door het besturingssysteem (Windows) kunt u bestanden tot 4 Terabytes maken en bewerken. Dat is 4096 gigabytes!!!!!

Geavanceerde string verwerking. De nieuwe string ondersteuning is 'errug!!!'.ASC(), INSTR(), MID$(), en PARSE$() accepteren een negatief indexgetal, om van rechts naar links te werken. PARSE$(x$,y$,-1) geeft het laatst toegevoegde veld in x$, -2 geeft het enelaatste. De string functie MID$("abcde",-3,2) geeft als resultaat 'cd', en het commando MID$("abcde",-3) = "12" levert een nieuwe waarde op van 'ab12e'.

BIN$(), HEX$(), en OCT$() bieden een optioneel digit-masker, zodat BIN$(1,4) de waarde "0001" oplevert. EXTRACT$() ondersteunt een optionele beginpositie op, REMAIN$() geeft de rest weer. MCASE$() maakt van elke eerste letter een hoofdletter. Verder leveren STRINSERT$(), STRDELETE$() en STRREVERSE$() de mogelijkheid om stukken uit de string toe te voegen, weg te halen of in een andere volgorde te zetten.

String vergelijkingen. Net zoals numerieke constanten is er nu ook de string-equivalent. Als $KillerApp="PB/DLL" wordt gebruikt, wordt dit behandeld als een constante. Voor het gemak hebben we een aantal voorgedefinieerde constanten, zoals &NUL, $TAB, $EOF, $ESC en meer.

DiskfFree en DiskSize, hoe groot is nu die schijf? En hoeveel ruimte is er nog vrij? Deze functies geven u het antwoord. Het is zo gepiept.

Sneller dan ooit. Onze ontwikkelaars zijn ontelbaar veel uren bezig geweest met CPU-klok pulsen te tellen en de code te optimaliseren. Zoals altijd zullen de resultaten u verbazen. Want wat vindt u van 1 miljoen lijnen per minuut compileren? U zult niet lang op uw code hoeven te wachten. Uitvoeringssnelheid? Het wordt niet beter dan dit! Arrays sorteren of doorzoeken gaat zo'n 35% sneller dan de concurrentie en over de gehele linie laat PowerBASIC de anderen vèr achter zich.

Eén floppy per toepassing. . . met nog ruimte over! We binden de strijd aan met lompe programma's. Creëer een applicatie met een compleet, stijlvol grafisch gebruikers interface. Gebruik vele formulieren, veel controle-knoppen, TCP communicatie, en grote bestanden. U heeft geen run-time bilbiotheken nodig, geen andere DLLs, niets anders dan één enkele, snelle, compacte executable. Lever een Win32 applicatie af op slechts één floppydisk!

Natuurlijk is er meer: SLEEP om even te pauzeren, RESET om alle gebruiker-gedefinieerde variabelen, types of arrays op te ruimen, en ERRAPI om de Win32 foutcodes op te vragen. Nieuwe functies als FILEATTR(), FILECOPY, FILENAME$(),

GET/PUT ABS, en LSET/RSET ABS. U krijgt lokale labels, een eenvoudige PBMain(), $REGISTER opties per functie, en REDIM met statische en globale variabelen. 'Native multithreading', MMX ondersteuning, matrix-operaties, register variabelen en integers zonder tekenbit. Er zijn code- en datapointers. Een ingebouwde assembler, ASCIIZ strings, unions, en 64-bit quad integers. Uitgebreide precisie drijvende komma getallen, meervoudige valuta variabelen, arrays sorteren, doorzoeken, elementen toevoegen en verwijderen en de snelste, meest compacte code in de industrie! Maar dat is wat u bent gaan verwachten van PowerBASIC. . . . We bieden met verschuldigde eerbied 'Vakmanschap in Code'.

Met deze nieuwe compilers heeft u alles wat u nodig heeft om een complete, robuste applicatie te maken voor 32-bit Windows! En als u nog steeds werkt met Windows 3.1: de 16-bit versie van PB/DLL is nu standaard inbegrepen bij PB/DLL 6.0. Weet u: er is nog nooit een betere tijd geweest om Basic programmeur te zijn. Het is een gouden kans om samen met PowerBASIC te werken.

 

=================================================================

Toevoegingen van de vertaler:

Met TCP wordt een 'verbinding' tot stand gebracht met een andere computer, waarbij alle data--overdracht wordt geregeld: oftewel: wat er aan de ene kant wordt weggestuurd, zal aan de andere zijde eruit komen. Bij verstoringen van de verbinding zal TCP zorg dragen voor heropvragen van de gemiste delen. Wel kan een twintigtal verzonden bytes in twee groepen van 10 bytes aankomen.

Bij UDP wordt alle aangeboden data steeds in een pakketje en vervolgens met een bestemmingsadres verstuurd. Elk pakketje kan een andere route nemen via het internet. Ook kunnen pakketjes geheel verloren gaan, doordat een te gebruiken verbinding niet meer bestaat of overbelast dreigt te raken.

Hierdoor kan het bijvoorbeeld voorkomen dat de volgorde van de data-pakketten niet hetzelfde is als de verzendvolgorde. Een pakket van twintig bytes komt echter altijd als twintig bytes aan of helemaal niet aan.

'Native multithreading' houdt in dat vanuit een enkel programma meerdere uitvoeringslijnen (multithreading) kunnen worden uitgezet, die elk zelfstandig en los van elkaar een taak uitvoeren, zonder dat de ene taak de andere beïnvloed. Hierdoor is het bijvoorbeeld mogelijk om de afdruktaak te initiëren en meteen door te werken. De afdruktaak loopt gewoon door, maar de gebruiker kan ook verder met bijvoorbeeld het wijzigen van de tekst. Windows barst van dit soort activiteiten naast elkaar, maar er zijn maar weinig compilers die er goed gebruik van kunnen maken. PowerBASIC is één van de pakketten die dit dus wèl kunnen. Aangezien de methode van PowerBASIC aansluit bij de methode van Windows, noemt men dit 'native', oftewel: oorspronkelijk/behorend bij.

 

Bezoek het PB forum in het Nederlands en/of teken mijn gastenboek.

Datum laatste aanpassing:
29 december 2003 03:41:50

Email mij voor reacties,
aanvullingen en correcties