Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
The Tattooist of Auschwitz (2024)

Se poate recupera numar de telefo...

Upgrade de la MacBook Pro M1 cu 8...

Ce tip de monitor am nevoie pt of...
 Resoftare camera supraveghere

Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 

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,604
  • Î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,604
  • Î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,604
  • Î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 spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

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