AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL Verständnis frage...

Ein Thema von DelTurbo · begonnen am 28. Mär 2024 · letzter Beitrag vom 30. Mär 2024
 
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#1

DLL Verständnis frage...

  Alt 28. Mär 2024, 13:11
Hi,
ich habe eine DLL die nur unter Delphi 10.4 erstellt werden kann. Strings/WideStrings in die DLL übergeben klappt alles. Allerdings gibt es eine Funktion in der DLL die Antwortet und einen langen String zurück gibt. Das bekomme ich einfach nicht hin. Nun hatte mich himitsu drauf aufmerksam gemacht das ich die Funktionen der DLL als cdecl exportiere. Nach langem überlegen werde ich die DLL wohl nur in dem einen Programm einsetzen was ich unter Delphi 2007 entwickle.
Soviel kurz zur Einleitung.


Also ich habe eine DLL die unter Delphi 10 erstellt werden muss, aber selber habe ich nur Delphi 2007. Nun habe ich mir überlegt ich schreibe das um auf stdcall. Ich dachte mir die DLL und das Programm sollte dann so aussehen.

Delphi 10:
Delphi-Quellcode:
library XDll;

uses
  SimpleShareMem,
  SysUtils,
  Classes;
{$R *.res}

procedure GetTxt(var t:WideString); stdcall;
var
  i :Integer;
begin
    t:='B';
    for i:=0 to 3000 do begin
      t:=t+'A';
    end;
end;

exports
  GetTxt;

begin
end.
Im Programm würde es denn so aussehen.

Delphi 2007
Delphi-Quellcode:
type
  TGetTxt = procedure (var t:WideString); stdcall;
var
  fMain :TfMain;
  GetTxt :TGetTxt;
  HelperHnd :THandle;

procedure TfMain.btnGetTxtClick(Sender: TObject);
var
  line      :WideString;
begin
    GetTxt(line);
end;   

procedure TfMain.FormCreate(Sender: TObject);
begin
    HelperHnd:=LoadLibrary('XDll.dll');
    if ( HelperHnd<>0 ) then begin
      @GetTxt:=GetProcAddress(HelperHnd,'GetTxt');
    end;
end;
Nun zur meiner Frage: Klappt das so? Ich habe es natürlich schon laufen lassen und es geht. Die frage die sich mir stellt ist, ob ich mir damit nirgends den Speicher zerknacke.

Vielen Dank im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz