Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Care este cea mai calitativa tabl...

Laptop Dell sau recomandare Lapto...

M.Zuiko Digital 90mm F/3.5 macro

Tehnologia DSL la Orange?
 conectare navigație auto la ...

Care e pretul corect pe mp?!

Auto 200-250km/zi autostrada, fia...

Idei noi? Ce verificam la o masin...
 Încarcare acumulatori LiPo de 1,5v...

cel mai ieftin generator trifazic

cum il cheama pe acest SSD?

Trec ITP-ul daca am montat alt mo...
 Problema mesaj supraincalzire tel...

Recuperare Cont Yahoo mail

Legislatie ambiguua/incompatibili...

Radio Argon 1 se aude foarte incet
 

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: 39,904
  • Î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: 39,904
  • Î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: 39,904
  • Î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

Neurochirurgie minim invazivă 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

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