![]() |
Strings: von C++ senden - in Delphi empfangen : WIE?
C++:
char *version; int cpu0core0t; ... version = "1.00"; cpu0core0t = 10; //dummy wert etc. wird ins Shared Memory geschrieben: auslesen mit einem C++-Programm geht problemlos. Mit einem Delphi-Programm kann ich nur Integer-Werte auslesen, bei den Strings kommt nur Müll heraus.
Delphi-Quellcode:
type
TSharedData = record cpu0core0t : Integer; //coretemp von cpu0,core0 version: array [0..3] of char; ... ... with SharedData^ do Begin Memo1.lines.add(Inttostr(cpu0core0t)); //geht Memo1.lines.add(version); //geht nicht |
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Keine Ahnung ob das dein Problem löst, aber:
"1.00" ist 5 Zeichen lang, nicht vier. "Strings" in C/C++ werden durch \0 (char(0)) abgeschlossen. |
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Versuchs mal mit einem PChar.
|
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Memo1.lines.add(PChar(version));
Ergebnis: üÿÿ‹ð‰w‰~ÇF¤B |
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Du castest ja auch auf einen PChar, willst aber einen String ...
probiers also mal mit Memo1.lines.add(String(version)); |
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Memo1.lines.add(String(version)); geht auch nicht
|
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Wie wäre es denn hier einfach mal den relevanten Teil des C++-Programms zu posten, welches in der Lage ist es zu lesen. Ich habe hier nämlich dieses unbestimmte Gefühl, daß du uns hier bei weitem nicht alle Fakten gegeben hast und dennoch eine zufriedenstellende Antwort erwartest.
|
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Delphi-Quellcode:
#include "stdafx.h"
#include <windows.h> #include <string> using namespace std; struct TData { char *version; int nr; ... } int main(int argc, char* argv[]) { const char* SHAREDMEMORYSEGMENTID = "CtMySiMcHa"; .... //write HANDLE host_handle; TData *host_data; host_handle = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,sizeof(TData),SHAREDMEMORYSEGMENTID); host_data = (TData*)MapViewOfFile(host_handle,FILE_MAP_WRITE,0,0,0); host_data->version = "erste"; host_data->nr = 1; //read HANDLE client_handle; TData *client_data; client_handle = OpenFileMapping(FILE_MAP_READ,false,SHAREDMEMORYSEGMENTID); client_data = (TData*)MapViewOfFile(client_handle,FILE_MAP_READ,0,0,0); printf("Inhalt des SM - version: %s\n",client_data->version); printf("Inhalt des SM - nr: %i\n",client_data->nr); ... UnmapViewOfFile(host_data); CloseHandle(host_handle); UnmapViewOfFile(client_data); CloseHandle(client_handle); flushall(); getchar(); return 0; } |
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
Zitat:
|
Re: Strings: von C++ senden - in Delphi empfangen : WIE?
@Olli:
Was empfiehlst Du? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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