Autor Beitrag
bruce185
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Mi 07.01.09 18:29 
Hallo,
ich bin gerade an einem Projekt und möchte ein teil meines Quellcodes in eine DLL Datei auslagern, nur habe ich probleme Strings zurückzugeben.

Wie könnte man das ambesten machen?

Ich danke euch schonmal.

MfG
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 07.01.09 18:39 
Wenn Du eine neue DLL erstellst, schreibt Delphi Dir da automatisch einen umfangreichen Kommentar da rein. Den solltest Du mal lesen ;)
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mi 07.01.09 19:03 
user profile iconbruce185 hat folgendes geschrieben Zum zitierten Posting springen:

möchte ein teil meines Quellcodes in eine DLL Datei auslagern, nur habe ich probleme Strings zurückzugeben.

Wie könnte man das ambesten machen?


Wie gut, dass wir das Thema hier noch nie hatten. Da kann die Suchfunktion nach "DLL" und "string" ja keine Treffer liefern. (Zaunpfahl bemerkt?)

Kurzfassung:

Wenn Du wirklich mit Strings arbeiten willst, dann geht das nur zwischen einem Delphi Programm und einer Delphi DLL, die beide sharemem verwenden.

Wenn die Moeglichkeit besteht, dass Du die DLL von einem nicht-Delphi Programm oder einem Delphi-Programm, das nicht mit sharemem arbeitet, verwenden willst, dann benutze keine Strings sondern PChar.

twm
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Mi 07.01.09 19:22 
Danke eucht,

ich werde es dann mal versuchen.

Ich habe noch eine Frage:
Gibt es vieleicht eine möglichkeit record von der DLL Datei zu exportieren und in Delphi Programm dann auszulesen?

Beispiel in DLL Datei:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
type
  TTest = record
  Titel: PChar;
end;


Edit: ich hab das mal so gemacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
library Project1;

uses
  SysUtils,
  Classes,
  IdHTTP;

type
  TTest = record
  Titel: PChar;
end;

var
  Test: TTest;

{$R *.res}

exports
  Test;


und in Delphi Programm möchte ich dann darauf zugreifen von der DLL.

z.B. so in Delphi Programm:
ausblenden Delphi-Quelltext
1:
Label1.Caption := Test.Titel;					


Danke schonmal.

MfG
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mi 07.01.09 21:59 
user profile iconbruce185 hat folgendes geschrieben Zum zitierten Posting springen:

Gibt es vieleicht eine möglichkeit record von der DLL Datei zu exportieren und in Delphi Programm dann auszulesen?


Nur eine Frage pro Thread bitte.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Mi 07.01.09 22:12 
Sry, ich habe bereits ein neuer Thread eröffnen.

MfG
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.01.09 10:58 
Was Strings und DLLs angeht: www.michael-puff.de/...ikel/StringDLL.shtml
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 08.01.09 11:07 
user profile icondummzeuch hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Du wirklich mit Strings arbeiten willst, dann geht das nur zwischen einem Delphi Programm und einer Delphi DLL, die beide sharemem verwenden.
Für ShareMem muss man eine Borland dll mitgeben. Ganz im Gegensatz zu Suche in: Delphi-Forum, Delphi-Library FASTSHAREMEM

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Do 08.01.09 16:06 
user profile iconJayEff hat folgendes geschrieben Zum zitierten Posting springen:
Für ShareMem muss man eine Borland dll mitgeben. Ganz im Gegensatz zu Suche in: Delphi-Forum, Delphi-Library FASTSHAREMEM


Nicht mehr seit Delphi 2005.

twm
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 09.01.09 17:59 
Nimm doch WideString, die sind nicht referenzgezählt und gehen über OS Funktionen.