Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile

Primele zile ale internetului per...
 Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...

De ce vor atația politicieni...
 ERR_ADDRESS_UNREACHABLE

Legea 18/1968 Se mai aplica?

Digi conectare 2 routere prin fir

Succesiune notar versus instanta ...
 Montaj aer conditionat in balcon ...

Cont curent mulți valuta far...

Sugestii plan casa

Experiente cu firme care cumpara ...
 

a include o functie din dll facut in delphi

- - - - -
  • Please log in to reply
8 replies to this topic

#1
simirulles

simirulles

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 10.02.2014
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
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003
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.


#3
simirulles

simirulles

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 10.02.2014
Pai si atunci cum pot so fac?

#4
simirulles

simirulles

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 10.02.2014
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



#5
simirulles

simirulles

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 10.02.2014
Help me pls

#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003
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
simirulles

simirulles

    New Member

  • Grup: Members
  • Posts: 5
  • Înscris: 10.02.2014

Quote

Tu realizezi ca s1 dispare la iesirea din functie ?
Pai atunci de ce in delphi merge totul super?
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
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003
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
ioman87

ioman87

    Member

  • Grup: Members
  • Posts: 313
  • Înscris: 05.02.2006
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

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate