![]() |
Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
a include o functie din dll facut in delphi
Last Updated: Feb 11 2014 18:28, Started by
simirulles
, Feb 10 2014 20:40
·
0

#1
Posted 10 February 2014 - 20:40

Salut, am o problema am deja un Dll creat in Delphi cu o functie in el,cum se poate de apelat functia in VB.NET 2010 Express
iata codul ddl din delphi library Project2; uses System.SysUtils, System.Classes;[/b] [b]{$R *.res} function MyNewMessage(s:string):string; stdcall; var i:integer; s1:string; begin s1:='Hello World '; for i:=length(s) downto 1 do s1:=s1+s[i]; MyNewMessage:=s1; end; exports MyNewMessage index 1; begin end. P.S.:In Delphi merge! |
#2
Posted 10 February 2014 - 20:50

http://msdn.microsof...#code-snippet-2
Dar tu returnezi o adresa ce dispare imediat (s1 e alocat pe stiva) !! Edited by neagu_laurentiu, 10 February 2014 - 20:51. |
#4
Posted 10 February 2014 - 22:15

eu am incercat asa dar nu merge,poate cineva stie raspunsul?
Imports System Imports System.Runtime.InteropServices Module example <DllImport("project2.dll", CharSet:=CharSet.Unicode)> _ Function Function MyNewMessage(ByVal hwnd As String) As String End Function Sub main() MyNewMessage("Hello World!") End Sub End Module Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Close() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox(MyNewMessage(TextBox1.Text)) End Sub |
#6
Posted 11 February 2014 - 10:34

Tu realizezi ca s1 dispare la iesirea din functie ? Nu are treaba cu Delphi sau .NET, e o greseala ce faci tu acolo.
Aloca dinamic pe s1 ca sa-l returnezi sau primeste ca parametru in functia aia un pointer ce-l vei "umple" sau poate are deja alocat spatiu si-l completezi etc. Pe urma vezi cum traduci tipurile la .NET. |
#7
Posted 11 February 2014 - 11:48

Quote Tu realizezi ca s1 dispare la iesirea din functie ? iata functia in delphi function MyNewMessage(s:string):string; stdcall;external 'c:\proj2\Project2.dll' index 1; procedure TForm2.Button1Click(Sender: TObject); begin showmessage(MyNewMessage(edit1.text)); end; Edited by simirulles, 11 February 2014 - 11:53. |
#8
Posted 11 February 2014 - 12:05

Cred ca incurc eu tehnologiile, Pascal/Delphi parca are string de tip value cu o lungime de max 255 caractere, nu pointer !
Edited by neagu_laurentiu, 11 February 2014 - 12:31. |
#9
Posted 11 February 2014 - 18:28

Daca vrei un dll care sa fie folosit dintr-un program creat in alt limbaj de programare, nu folosi in definita functiei de export structuri de date specifice limbajului (de ex: string). In cazul tau, foloseste pointeri catre un sir de caractere (pchar), cu memoria initializata de functia apelanta, trimis ca si parametru.
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users