DLLs Stringübergabe und Plugins.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

DLLs Stringübergabe und Plugins.

Beitrag von monta »

Wie verhält es sich den bei Lazarus mit der weitergabe von strings an eine dll/library und deren Zurückgabe? Bei Delphi ist dies ja mit einigen Umständen verbunden, wenn man keine Probleme bekommen will, und nicht Shortstring oder PChar verwenden will.

Ist das bei Lazarus ähnlich umständlich, oder kann man bedenkenlos einfache strings übergeben?

Und noch ne zweite Frage, die ich mal gleich mit Anhänge, wenn ich Plugins realisieren möchte, sollte man dort über dlls mit Formularen gehen, welche ich irgendwie einbinde, oder sollte man lieber gleich kleine Exen erstellen und diese entsprechend bei Bedarf ausführen und die nötigsten Parameter beim start übergeben?
Wie verhält es sich eigentlich mit Formularen in Dlls bei Lazarus?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Formaulare sind z.Z. nicht möglich soweit ich weiss es sei denn du gehst komplexere Wege. Strings zu übergeben würde ich auch nicht versuchen da Delphi/Lazarus Strings nunmal etwas sind was nicht standartkonform nach aussen ist. Zur Übergabe ist PChar schon ok so hast du auch ne ordentliche Schnittstelle die auch von C oder VB oder wasauch immer angesprochen werden kann.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Danke, auch wenn die DLL eh in keiner anderen Sprache gebraucht wird, weils zu speziell für mein Programm ist, werd ich PChar nehmen, da bin ich dann also auf der sicheren Seite.
Und meine Formulare haben sich dann auch erledigt, also kleine externe Exen, bei Bedarf.

//hab ich gerade noch gesehen
http://www.freepascal.org/mantis/view.php?id=7181

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Und noch ein Problem, bei meinen Versuchen.

Wieso ist es nicht möglich, in ner DLL eine Ini auszulesen?

Code: Alles auswählen

library project1;
 
{$mode objfpc}{$H+}
 
uses
  Classes, SysUtils, inifiles;
 
function TestDLL: PChar; stdcall;
var ini: TIniFile;
    temp: TStrings;
begin
  ini := TIniFile.Create('test.ini');
  temp := TStrings.Create;
  try
    ini.ReadSection('test', temp); //<<<<Absturz
  finally
    ini.Free;
    temp.Free;
  end;
  Result := PChar('Test gelungen');
end;
 
exports TestDLL;
 
begin
end.;


Sobald ich die Zeile mit ReadSection auskommentiere läuft alles Problemlos, aber warum kan man in der Dll keine Ini lesen bzw. was mach ich falsch?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Probier mal

temp:= TStringList.create;

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Das wars, danke.

Antworten