AGB  ·  Datenschutz  ·  Impressum  







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

Fehler beim DLL aufruf

Ein Thema von Gehstock · begonnen am 23. Feb 2011 · letzter Beitrag vom 24. Feb 2011
Antwort Antwort
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Fehler beim DLL aufruf

  Alt 23. Feb 2011, 00:53
Delphi-Version: 2005
die DLL exportiert mehrere Funktionen z.B.

Delphi-Quellcode:
function CountryCodeToMCC(CountryCode: String): Integer;
var
  i: Integer;
begin
  result := 0;
  i := 0;
  while TabHWName[i].MNC < 999 do
  begin
    if UpperCase(CountryCode) = UpperCase(TabHWName[i].CountryCode) then
    begin
      result := TabHWName[i].MCC;
      break;
    end;
    inc(i);
  end;
end;

function MCCToCountry(MCC: Integer): String;
var
  i: Integer;
begin
  result := '';
  i := 0;
  while TabHWName[i].MNC < 999 do
  begin
    if MCC = TabHWName[i].MCC then
    begin
      result := TabHWName[i].Country;
      break;
    end;
    inc(i);
  end;
end;
aufrufen tue ich mit

Delphi-Quellcode:
function CountryCodeToMCC(CountryCode: String): Integer; cdecl; external 'ProviderDLL.dll';
function MCCToCountry(MCC: Integer): String; cdecl; external 'ProviderDLL.dll';
wobei die erste tut was sie soll, die 2 (und auch alle anderen Funktionen aber eine exception werfen)



Zitat:
---------------------------
Dlltest
---------------------------
Zugriffsverletzung bei Adresse 002C4EAA in Modul 'ProviderDLL.dll'. Lesen von Adresse 00194000.
---------------------------
OK
---------------------------
die Funktionen sind alle getestet und tun was sie sollen also schein ich beim Aufruf was falsch zu machen
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Fehler beim DLL aufruf

  Alt 23. Feb 2011, 01:09
Stimmt die Aufrufkonvention?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Fehler beim DLL aufruf

  Alt 23. Feb 2011, 01:16
Sollte bei stdcall crasht die DLL sofort
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Fehler beim DLL aufruf

  Alt 23. Feb 2011, 01:57
Und? Wenn du schon so lustig mit Strings herumwirfst, benutzt du dann auch den korrekten Speichermanager damit sich die Strings aus deiner Anwendung und die aus der DLL auch miteinander vertragen?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Fehler beim DLL aufruf

  Alt 23. Feb 2011, 07:25
PCHAR oder Sharemem...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: Fehler beim DLL aufruf

  Alt 23. Feb 2011, 07:38
PCHAR oder Sharemem...
Genau.

PCHAR aber bitte nur mit Abzählen ... ach und wenn wir schon wissen daß Delphi jetzt auch Unicode kann, sollten wir vielleicht explizit PAnsiChar oder PWideChar verwenden.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Fehler beim DLL aufruf

  Alt 24. Feb 2011, 01:08
Was spricht gegen den WideString? Einen PChar muss man, wenn man in String umwandeln will immer explizit konvertieren (oder umgekehrt).
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: Fehler beim DLL aufruf

  Alt 24. Feb 2011, 02:33
Was spricht gegen den WideString? Einen PChar muss man, wenn man in String umwandeln will immer explizit konvertieren (oder umgekehrt).
Es spricht nichts dagegen, solange man ShareMem benutzt (was unter anderem eine weitere DLL voraussetzt, borlndmm.dll oder so ...).

Strings in Delphi basieren auf Compiler Magic ... entsprechend muß man dem Compiler die Möglichkeit geben diese "Zauberei" anzuwenden. Wenn Anwendung und DLL sich nicht den gleichen Speichermanager teilen, gibt's Probleme. Sollte eigentlich Grundwissen für jeden Delphianer sein.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#9

AW: Fehler beim DLL aufruf

  Alt 24. Feb 2011, 02:47
WideStrings lassen sich ohne Probleme zischen DLLs hin und herschieben, auch ohne ShareMem. Ich verweise auf diesen Beitrag von Apollonius.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#10

AW: Fehler beim DLL aufruf

  Alt 24. Feb 2011, 03:33
WideStrings lassen sich ohne Probleme zischen DLLs hin und herschieben, auch ohne ShareMem. Ich verweise auf diesen Beitrag von Apollonius.
Gut, wieder was gelernt. Wenn das über BSTR implementiert ist, macht es Sinn. Danke.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  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 03:10 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