AGB  ·  Datenschutz  ·  Impressum  







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

Applikation -> DLL und umgekehrt (PChar)

Ein Thema von eLse-maestro · begonnen am 4. Feb 2008 · letzter Beitrag vom 4. Feb 2008
Antwort Antwort
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#1

Applikation -> DLL und umgekehrt (PChar)

  Alt 4. Feb 2008, 15:50
Hi Leute,
Ich möchte einen string, bzw. einen PChar von einer dll an die Applikation & umgekehrt übergeben.
Mit einem Integer kriege ich das hin, aber nicht mit einem PChar, dann kommt immer eine zugriffsverletzung.

könnt ihr mir da weiterhelfen?
alle meine tutorials sind nur mit integer werten (dsdt.info + ein buch)

applikation:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TInfoFunktion = function(about_what: pchar):pchar; stdcall;
  function info1(about_what: pchar):pchar;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function info1(about_what: pchar):pchar;
var InfoFunktion: TInfoFunktion;
    Handle: THandle;
begin
  Handle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'dll.dll'));
  if Handle <> 0 then begin
    @InfoFunktion := GetProcAddress(Handle, 'info');
    if @InfoFunktion <> nil then begin
      result := InfoFunktion(about_what);
    end;
    FreeLibrary(Handle);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var test:pchar;
begin
test:='test';
    showmessage(info1(@test));
end;

end.

dll:
Delphi-Quellcode:
library dll;



uses
  SysUtils,
  Classes;

{$R *.res}
function info(about_what: pchar):pchar; stdcall;
begin
  if about_what='testthen
  result := 'super1'
  else
  result:='super2';
end;

exports
  info;
begin
end.
edit: hmm und ich hatte heute schon ein paar av's
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Applikation -> DLL und umgekehrt (PChar)

  Alt 4. Feb 2008, 15:55
Zitat von eLse-maestro:
dann kommt immer eine Fehlermeldung.
Ich hatte heute Gulasch.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Applikation -> DLL und umgekehrt (PChar)

  Alt 4. Feb 2008, 16:02
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var test:pchar;
begin
test:='test';
    showmessage(info1(test));
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Applikation -> DLL und umgekehrt (PChar)

  Alt 4. Feb 2008, 16:12
Siehe hier: http://www.michael-puff.de/Artikel/2...String_DLL.php

(PS: Ich muss die Artikel noch mal überarbeiten, was den Kopf angeht. )
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#5

Re: Applikation -> DLL und umgekehrt (PChar)

  Alt 4. Feb 2008, 17:01
@dax, das hatte ich auch schon probiert, klappt nicht.

danke luckie.
ich verstehe nur eine zeile nicht
Str(Integer(@func1), s);


vielen dank
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:55 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