Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Bygg en DLL i Delphi för VB

Postad 2002-07-21 av Sven Åke Persson i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 4276, Betyg: 73%

Förord

En av de kraftigaste fördelarna med Delphi är att du kan bygga DLL :er som löser ett behov av snabba rutiner ,då främst inom stränghantering och komplicerade matematik algoritmer.Om du kan Vb syntax blir det väldigt enkelt att komma igång. Dessa DLL:er kan enkelt anropas från VB. DLL:erna blir "StandAlone" dvs du behöver inte bekymra dig om att bifoga en massa extra tillbehör. I Delphi kan du göra inline assembler som sedan tex VB kan dra nytta av Ett stort tack till Staffan Berg som startade denna artikelserie om Delphi Artikel 251 och 252 leder Er vidare i Delphi:s underbara värld
Innehåll
  » Inledning
  » Utförand
  » Testa programmet
Relaterade artiklar
  » Introduktion till Delphi
  » Skapa program i Delphi


Inledning

Handlingsmönstret blir som följer:


  • Välj New (under File)

  • Välj DLL

  • Spara Som "MyFirstDll.dpr i din arbetskatalog



Ditt Pascal kodfönster skall nu se ut så här.


library MyFirstDll;
{ To avoid using BORLNDMM.DLL, pass string
information using PChar or ShortString parameters.}
uses
SysUtils,Classes;

{$R *.RES}
begin
end.


Nu kan Vi börja bygga vår DLL. Jag skall ge ett exempel på några enkla matematik funktioner och en strängfunktion, som är den krånligaste delen av DLL bygge.


Utförand

Vi skall bygga på ett "proffsigt" sätt, dvs tillverka en ny Unit som Vi sedan skall lägga in / koppla i uses (se koden ovan).


  • Välj New igen

  • Välj Unit

  • Spara Som Vbapp.pas



Nu skall ditt projekt se ut såhär


När du klickar på MyFirstDll så har det tillkommit Vbapp in 'Vbapp.pas'; under Uses


library MyFirstDll;
{ To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters.}
uses
SysUtils,
Classes,
Vbapp in 'Vbapp.pas';
{$R *.RES}
begin
end.


Från och med nu skall vi jobba i unit Vbapp. Eftersom jag är gammal navigatör så blir det ett exempel på omvandling från Knop till Km / h samt
Distansminuter till Km.
Man kan också se hur man behandlar strängar i en Delphi DLL
Här ser ni hur Funktionerna och Subrutin är utformade:


unit Vbapp;
interface
//Viktigt deklarera för Export och som StdCall
Function KnopToKm(inKnop : Single) :
Single;Export;StdCall ;
Function DmToKm(inMinut : Single) :
Single;Export;StdCall ;
// String måste behandlas efter denna princip
Procedure StrConvert(inStr :String ;
outStr : PChar);Export;StdCall ;

implementation
uses
//jag behövde denna uses därför att jag använder ffFixed
SysUtils ;
Function KnopToKm(inKnop : Single):Single ;
var
retValue : String ;
Begin
retValue := FloatToStrF(inKnop / 0.54,ffFixed,10,1) ;
KnopToKm := StrToFloat(retValue) ;
End ;
//*******************************
Function DmToKm(inMinut : Single):Single ;
//Distansminuter till km
var
retValue : String ;
Begin
retValue := FloatToStrF(inMinut/0.54,ffFixed,10,1) ;
DmToKm := StrToFloat(retValue) ;
End ;
//*******************************
Procedure StrConvert(inStr:String ; outStr : PChar);
{I brist på ideer kunde jag inte hitta
på annat än detta, jag gör reverse på inStr}
// Tack till signatur Q för hjälp med denna sub
Var
tmpStr : String ;
tmpChar : Char ;
i : Integer ;
Begin
For i := Length(inStr) downto 1 do
Begin
tmpChar := inStr[i] ;
tmpStr := tmpStr + tmpChar ;
End ;
//här blir outStr åtkomlig för VB
StrPCopy(outStr,tmpStr) ;
End ;
//*******************************
end.






Testa programmet

Nu kan du provköra med Run. Då skapas en fil i din arbetsmapp MyFirstDll.dll. Om du får ett felmeddelande om Debugg så kan du ignorera det genom att klicka Ok .
MyFirstDll.dll är inte klar men Vi har fått kvitto på att första delen av kodningen är Ok. Nu kommer en sista åtgärd innan Dll:en är klar för användning


  • Välj MyFirstDll
    (Vi skall göra ytterligare en Editering)




library MyFirstDll;
{ To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
SysUtils,
Classes,
Vbapp in 'Vbapp.pas' ;
{$R *.RES}
Exports KnopToKm , DmToKm , StrConvert ;
begin
end.


Under {$R *.RES} före begin skall Vi lägga till vilka Functioner eller Subrutiner som skall Exporteras (göras åtkomliga från yttre program). Vi skriver in alla Funktionerna
Exports KnopToKm , DmToKm, StrConvert ;


  • Kör Run
    Dll:en är nu färdigkompilerad och ligger i din arbetsmapp klar att användas från
    tex VB enl exempel nedan



Här är ett litet Vb-program som testar MyFirstDll.dll


Option Explicit
'Enkelt test program som testar vår Delphi DLL
Private Declare Function KnopToKm Lib "MyFirstDll.dll" _
(ByVal knop As Single) As Single

Private Declare Function DmToKm Lib "MyFirstDll.dll" _
(ByVal dminuter As Single) As Single

Private Declare Sub StrConvert Lib "MyFirstDll.dll" _
(ByVal TestStr As String, ByVal LpStr As String)

Private Sub Command1_Click()
Dim retVal As Single
retVal = KnopToKm(10.78)
MsgBox retVal & " km/h"
End Sub

Private Sub Command2_Click()
Dim retVal As Single
retVal = DmToKm(340)
MsgBox retVal & " km"
End Sub

Private Sub Command3_Click()
'StrBuffer kommer att inehålla retur strängen
Dim StrBuffer As String * 20
StrConvert "Sven Persson", StrBuffer
MsgBox StrBuffer
End Sub

Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
999
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies