![]() |
Re: C Funktion, um zwei Strings zu verbinden in DLL
Stimmt. Aber er will immer noch nicht:
Code:
Ich meinte, er scheint es nicht zu mögen, dass ich nil übergebe anstatt einen gültigen Speicherbereich. Zu mindest scheint die AV daraufhinzuweisen:
EXPORT int addstr(char *str1, char *str2, char *buffer, int lenbuffer)
{ if(strlen(str1) + strlen(str2) > lenbuffer) { return strlen(str1) + strlen(str2); } else { strcpy(buffer, str1); strcat(buffer, str2); return strlen(buffer); } } Zitat:
Allerdings ist der Buffer jetzt leer. Und in ShowMessage sthet nur die Länge. |
Re: C Funktion, um zwei Strings zu verbinden in DLL
Geht es so?
Code:
EXPORT int addstr(char *str1, char *str2, char *buffer, int lenbuffer)
{ if(strlen(str1) + strlen(str2) >= lenbuffer) { return strlen(str1) + strlen(str2) + 1; } else { strcpy(buffer, str1); strcat(buffer, str2); return strlen(buffer); } } |
Re: C Funktion, um zwei Strings zu verbinden in DLL
Nein auch nicht. :gruebel:
|
Re: C Funktion, um zwei Strings zu verbinden in DLL
Delphi-Quellcode:
Ich kann mich irren, aber müsste das nicht in beiden Fällen cdecl sein?
type
TAdd = function(a, b: Integer): Integer; stdcall; TAddStr = function(str1, str2: PChar; Buffer: PChar; lenbuffer: Integer): Integer; stdcall; |
Re: C Funktion, um zwei Strings zu verbinden in DLL
Nein. Ich habe im es VS auf stdcall gestellt.
|
Re: C Funktion, um zwei Strings zu verbinden in DLL
Oh, hab ich wohl überlesen :oops:
Aber:
Delphi-Quellcode:
Warum fällt mir das jetzt erst auf :wall:
len := AddStr(PChar(str1), PChar(str2), Buffer, sizeof(Buffer));
ShowMessage(string(Buffer) + '[' + IntToStr(len) + ']'); sizeof(Buffer) => 4 Und: warum Buffer als PChar? Machs doch als string und übergebe @Buffer[1] als Parameter. |
Re: C Funktion, um zwei Strings zu verbinden in DLL
Autsch. Jetzt wo du es sagst. :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
|
Re: C Funktion, um zwei Strings zu verbinden in DLL
Auf einer 128-Bit-Maschine hätts funktioniert :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz