Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array of String nach und von DLL (https://www.delphipraxis.net/83575-array-string-nach-und-von-dll.html)

mr47 4. Jan 2007 18:21


Array of String nach und von DLL
 
Hi!

Ich übergebe Strings zwischen Programm und DLL immer als Pointer und Größenangabe, d.h.
Delphi-Quellcode:
type
  Pstr = ^String;

.
.
.
function test(P_Str: PStr; Size: Cardinal);
...
Der String wird dann so "geholt":
Delphi-Quellcode:
CopyMemory(@s,P_Str,size);
Das funktioniert auch wunderbar :wink: Jetzt will ich aber ein dynamisches "Array of String" (kein ShortString!) übergeben.
Geht das einfach so? Und wie ermittle ich die Größe des Arrays? Weil SizeOf() gibt seltsamerweise die Anzahl der Elemente zurück :gruebel:

Dankeschön im Voraus

gruß mr47

mkinzler 4. Jan 2007 18:24

Re: Array of String nach und von DLL
 
Übergib das besser als PChar( C-String) bzw einem Array davon

mr47 4. Jan 2007 18:36

Re: Array of String nach und von DLL
 
Du meinst so:

Delphi-Quellcode:
function test(P_Str: PChar; Size: Cardinal);
//und
CopyMemory(@s,P_Str,size);
?
Wenn ich das mache, bekomme ich ne AV

Bei einem Aufruf mit:

Delphi-Quellcode:
var x: PChar;
begin
  x := '123';
  test(x,sizeOf(x));
end;

mkinzler 4. Jan 2007 18:43

Re: Array of String nach und von DLL
 
Delphi-Quellcode:
var x: String;
begin
  x := '123';
  test(PChar(x),sizeOf(x));
end;

mr47 4. Jan 2007 18:51

Re: Array of String nach und von DLL
 
Ok, das scheint zu funktionieren, danke! Aber nochmals ne Verständnisfrage: Was ist denn jetzt PChar? Ist es ein Zeiger?

mr47

Elvis 4. Jan 2007 18:52

Re: Array of String nach und von DLL
 
Zitat:

Zitat von mr47
Ok, das scheint zu funktionieren, danke! Aber nochmals ne Verständnisfrage: Was ist denn jetzt PChar? Ist es ein Zeiger?

Halte mal Steuerung gedrückt und klicke dann auf PChar. ;)

mkinzler 4. Jan 2007 18:53

Re: Array of String nach und von DLL
 
Zitat:

Ist es ein Zeiger?
Ja eine Zeiger auf ein Zeichen (1.Zeichen der Zeichenkette)

mr47 4. Jan 2007 18:58

Re: Array of String nach und von DLL
 
Ok, vielen Dank! Das mit dem Array funktioniert auch!

@Elvis: Ich hab die D7-Hilfe durchgewühlt, wobei ich diese Aussage so klar nirgendwo gesehn hab. Sonst hätte ich nicht gefragt.


grüße, mr47 :wink:

Elvis 4. Jan 2007 19:02

Re: Array of String nach und von DLL
 
Zitat:

Zitat von mr47
@Elvis: Ich hab die D7-Hilfe durchgewühlt, wobei ich diese Aussage so klar nirgendwo gesehn hab. Sonst hätte ich nicht gefragt.

Deshalb ja Ctrl+Click. Genauer und knapper als "PChar = ^Char;" wirst du es wohl so schnell woanders nicht bekommen. :mrgreen:

mr47 4. Jan 2007 19:06

Re: Array of String nach und von DLL
 
Oh, ok, daran hab ich nicht gedacht!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 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