AGB  ·  Datenschutz  ·  Impressum  







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

string / PChar Problem in funktion / dll

Ein Thema von MaBuSE · begonnen am 9. Jul 2004 · letzter Beitrag vom 9. Aug 2004
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

string / PChar Problem in funktion / dll

  Alt 9. Jul 2004, 14:36
Hallo,

ich habe folgende Definition einer Funktion in einer DLL:
Code:
BOOL __declspec(dllexport) GetUser    (LPSTR sDomain, LPSTR sUser, DWORD nLen);
in Delphi sieht das bei mir so aus:
Delphi-Quellcode:
function GetUser(sDomain: LPSTR; var sUser: LPSTR; var nLen: DWORD):BOOL; stdcall; overload;
...
exports
  GetUser(sDomain: LPSTR; var sUser: LPSTR; var nLen: DWORD) name 'GetUser';
Mein Problem ist die Übergabe eines Strings als LPSTR.

Delphi-Quellcode:
function myMagicFunc(const sDomain: string; var SUser: string):Boolean;
...

function GetUser(sDomain: LPSTR; var sUser: LPSTR; var nLen: DWORD):BOOL;
var
  sD,
  sU: string;
  cU: array of Char;
begin
  sD := sDomain;
  sU := sUser;
  Result := myMagicFunc(sD, sU);

  // string sU in array of char cU umwandeln
  setlength(cU, length(sU));
  StrLCopy(@cU[0],@sU[1],length(cU));

  sUser := PansiChar(cU);
  nLen := Length(cU);

  // Compiler-Hinweis Beseitigung ;-)
  if sUser = sDomain then ;
end;
Das will nicht so wie ich will !!!

Gibt beim Aufruf eine Schutzverletzung.

Weiß jemand Rat ?

[edit]Als offene Frage markiert[/edit]
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: string / PChar Problem in funktion / dll

  Alt 7. Aug 2004, 18:44
Hi,

vielleicht hilft dir die Funktion Delphi-Referenz durchsuchenStrPCopy weiter.
Du musst vorher natürlich mit Delphi-Referenz durchsuchenGetMem Speicher für deinen PChar reservieren (mindestens Length(MyString)).

Dann sollte es gehen.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#3

Re: string / PChar Problem in funktion / dll

  Alt 7. Aug 2004, 19:14
Zitat von mirage228:
vielleicht hilft dir die Funktion Delphi-Referenz durchsuchenStrPCopy weiter.
Delphi-Referenz durchsuchenStrLCopy ist sicherer (Pufferüberlauf).
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: string / PChar Problem in funktion / dll

  Alt 7. Aug 2004, 19:24
Zitat von NicoDE:
Zitat von mirage228:
vielleicht hilft dir die Funktion Delphi-Referenz durchsuchenStrPCopy weiter.
Delphi-Referenz durchsuchenStrLCopy ist sicherer (Pufferüberlauf).
Ja?

Eigentlich ist StrPCopy doch nur eine Projektion von StrLCopy!?

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#5

Re: string / PChar Problem in funktion / dll

  Alt 7. Aug 2004, 19:29
Zitat von mirage228:
Eigentlich ist StrPCopy doch nur eine Projektion von StrLCopy!?
Was meinst Du mit Projektion?

Man kann natürlich auch vorher die Länge des Eingabestrings ermitteln und prüfen, ob der Puffer groß genug ist. Oder man legt den Puffer anhand der Länge des Eingabestring an - dann erübrigen sich die Prüfungen von selbst

---

Delphi-Referenz durchsuchenStrPCopy
Code:
Description

StrPCopy copies a Pascal-type string Source into a null-terminated string Dest. It returns a pointer to Dest.

StrPCopy does not perform any length checking.

The destination buffer must have room for at least Length(Source)+1 characters.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: string / PChar Problem in funktion / dll

  Alt 7. Aug 2004, 19:37
Zitat von NicoDE:
Zitat von mirage228:
Eigentlich ist StrPCopy doch nur eine Projektion von StrLCopy!?
Was meinst Du mit Projektion?
Das StrPCopy selbst nur StrLCopy aufruft (man muss halt weniger Parameter angeben).

Da muss man natürlich vorsichtig sein, indem man vorher genug Speicher reserviert...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#7

Re: string / PChar Problem in funktion / dll

  Alt 7. Aug 2004, 19:57
Zitat von mirage228:
Das StrPCopy selbst nur StrLCopy aufruft
Mag sein. Der Unterschied ist, dass StrPCopy die Länge des Eingabesstrings an StrLCopy übergibt - nicht die Größe des Puffers.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: string / PChar Problem in funktion / dll

  Alt 9. Aug 2004, 09:55
Vielen Dank für die Antworten, ich werde das ausprobieren und "mein" Ergebnis hier posten.
(Offene Frage wird als beantwortet markiert)

(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  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 23:16 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