AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C++ Dll soll Zeichenkette manipulieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ Dll soll Zeichenkette manipulieren

Ein Thema von rey003 · begonnen am 1. Feb 2009 · letzter Beitrag vom 7. Feb 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von rey003
rey003

Registriert seit: 31. Aug 2005
Ort: Sachsen ;-)
46 Beiträge
 
Delphi 2006 Architect
 
#11

Re: C++ Dll soll Zeichenkette manipulieren

  Alt 7. Feb 2009, 18:51
So nach einer Woche krank im Bett rumliegen meld ich mich mal wieder zu Wort.
Zunächst erstmal ein Danke für eure Bemühungen.

Ich poste einfach mal meinen derzeitigen Quelltext
DLL:
Code:
extern "C" __declspec(dllexport) int String_aendern(char * sstring);

...

int String_aendern(char * sstring)

   MessageBox(0,LPCSTR(sstring),_T("M1"),0); //bringt: Alter Text

   char newtxt[] = "Neuer Text";
   sstring = newtxt;
   MessageBox(0,LPCSTR(sstring),_T("M2"),0); //bringt: Neuer Text

   return strlen(sstring);
}
Das Gegenstück dazu in Delphi:
Delphi-Quellcode:
function String_aendern(sstring: PChar): Integer; cdecl; external 'DLL.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
  len: integer;
  buffer: array [0..30] of char;
begin
  buffer:= 'Alter Text';

  len:=String_aendern(@buffer); //in dem Fall 10
  showmessage(StrPas(buffer)); //bringt: Alter Text
end;
Der Text in Buffer wird jedoch gar nicht verändert (laut Delphi-Debugger).
Warum ändert er die Variable nicht?
Daniel S.
  Mit Zitat antworten Zitat
Benutzerbild von rey003
rey003

Registriert seit: 31. Aug 2005
Ort: Sachsen ;-)
46 Beiträge
 
Delphi 2006 Architect
 
#12

Re: C++ Dll soll Zeichenkette manipulieren

  Alt 7. Feb 2009, 18:59
Ok hat sich erledigt... Habs grade hinbekommen, dabei stand der Tipp schon in der 3. Antwort
Code:
extern "C" __declspec(dllexport) int String_aendern(char * sstring);

...

int String_aendern(char * sstring)
{
   MessageBox(0,LPCSTR(sstring),_T("M1"),0); //bringt: Alter Text

   char newtxt[30] = "Neuer Text";
   strcpy(sstring, newtxt);
   MessageBox(0,LPCSTR(sstring),_T("M2"),0); //bringt: Neuer Text

   return strlen(sstring);
}
Jetzt geht es so wie ich das will
Danke noch mal an euch
Daniel S.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:25 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