Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Daten zwischen C++ und Delphi-Programm austauschen (https://www.delphipraxis.net/124020-daten-zwischen-c-und-delphi-programm-austauschen.html)

stefanahrens 13. Nov 2008 00:16


Daten zwischen C++ und Delphi-Programm austauschen
 
Moin Moin,

ich habe eine C++ programm, dieses Programm zeigt mit Mitglieder eines Channels, wer redet etc an.
(Der Entwickler würde mich ggf Methoden etc bereitstellen.)
Diese Daten möchte ich in ein Delphiprogramm bekommen, um sie dort zu verarbeiten.

Generell würde es mich interessieren, wie 2 Programme untereinander Daten austauschen :)

Über eine Antowrt freu ich mich.

MfG

Stefan

mkinzler 13. Nov 2008 05:39

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
IPC, Named Pipes, MailSlots, Dateien, Datenbank, TCP/IP-Verbindung, ...

stefanahrens 13. Nov 2008 07:17

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Moin Moin,

was denn so Wortkark am frühen morgen :)

Danke erstmal für deine Antwort!!

Ich denke das Named Pipes bzw Mailboxen(da nicht synchron) sich ganze interessant anhören und im msdn ganz nett lesen.

Ich werde mich mal an nen kleines Tool machen ums nen bissle zu testen :)

Danke!

Über weiter Antworten, Anregungen bzw. gute Tuts bin ich dankbar :)

MfG

stefanahrens 13. Nov 2008 15:26

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Moin Moin,

also ich habe mich dann heute mal ein bissle mehr mit dem Thema beschäfftigt...

Ich bin zu dem Entschluss gekommen, das ich named pipes benutzen möchte, da diese auch asynchron laufen können.

Leider habe ich kein Beispiel, Tut etc gefunden.
Die MSDN Sachen sind in c++ / c und ich habs leider nicht geschafft diese umzuschreiben.
Ich habe auch die Komponenten zum Einbinden hier im Forum gefunden, damit konnte ich bisher leider auch kein Ziel finden :(

Danke schonmal,

mfg

Fridolin Walther 13. Nov 2008 15:48

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Eine kleine Demo ist angehängt. Wenn Fragen sind, fragen :).

stefanahrens 13. Nov 2008 16:32

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Hey,

DANKE 0xF30FC7 für die schnelle Antwort.

Leider sagt er, er kennt diese jwawinbase, jwawintype, jwawinnt, jwaaccctrl, jwaaclapi, jwawinerror Units, bzw -.dcu's nicht.

Desweiteren möchte er bei WriteFile

Delphi-Quellcode:
WriteFile(PipeHandle, @Value, 4, @tmp, nil);
bei Value eine Variable :) und bei nil einen Parameter mit dem Tpen.

MfG

Fridolin Walther 13. Nov 2008 16:37

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Ich persönlich benutz nicht die Windows Unit sondern die JEDI API Header (jwa*-Dateien), da diese zum einen vollständiger sind und zum anderen (fast immer) genauer. Zu bekommen sind die Dateien hier:

http://jedi-apilib.sourceforge.net/

stefanahrens 13. Nov 2008 17:48

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
KK, jetzt muss ich nur nochmal sehen, wie ich die schön in Delphi eingebunden bekomme :)

Aber Danke, das scheint zu Funktionieren :) bzw ES FUNKTIONIERT :)

Ich mach mal weiter :)

MfG

stefanahrens 14. Nov 2008 14:30

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Mmh,

diese Zeile verursacht an nem anderen System eine Zugriffverletzung...

GetAclInformation(ACL, @ACL_SIZE, sizeof(ACL_SIZE), AclSizeInformation);

Hast du ne Idee?

MfG

Fridolin Walther 14. Nov 2008 14:42

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Wahrscheinlich liegt es daran, das es bei Dir die Gruppe "Administratoren" nicht gibt ;). Der PipeServer lässt Verbindungen nämlich nur zu, wenn der Client von einem Benutzer aus dieser Gruppe gestartet wurde. Wenn Du das nicht benötigst (z.B. weil die beiden Anwendungen im selben Userkontext laufen), ließe sich der komplette Quellcode nochmal deutlich vereinfachen.

stefanahrens 14. Nov 2008 14:44

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Hey, du bist ja echt immer fix dabei :)

Also die Anwedungen laufen immer unter dem gleichen user und nur lokal :)

MfG

Ps:
Delphi-Quellcode:
So wirft es keine Fehler mehr.


[pre] if (SetEntriesInAcl(1, EA, nil, ACL) = ERROR_SUCCESS)
  then begin
    GetAclInformation(ACL, @ACL_SIZE, sizeof(ACL_SIZE), AclSizeInformation);
    getmem(SD, SECURITY_DESCRIPTOR_MIN_LENGTH + ACL_SIZE.AclBytesFree + ACL_SIZE.AclBytesInUse);
    InitializeSecurityDescriptor(sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(sd, TRUE, ACL, FALSE);
  end;[/pre]

Was macht das denn ganz genau. es legt zurgiffberechtigungen fest?

MfG
so gehts ;)

Fridolin Walther 14. Nov 2008 14:52

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, hier mal ohne explizites Setzen der Zugriffsberechtigung, weil Du es ja nicht benötigst. Ich habs dann auch gleich mal gegen die normale "windows.pas" compiliert, damit Du die JWA Units nicht mehr benötigst ;).

stefanahrens 14. Nov 2008 14:52

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
hey das cool :)

BIG THX :)

stefanahrens 14. Nov 2008 16:59

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Hey,

zum Übertragen wird ja ein DWord übergeben.
Wass muss ich bei Strings machen? Wenn ich da nen String übergebe, dann ist beim ersten mal was falsches drinne und es kommen später fehler...

naja muss erstmal los zum sport.

mfg

SirThornberry 14. Nov 2008 19:40

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Wenn der Programmierer dir etwas bereit stellen würde wäre es das einfachste einfach eine DLL bereit stellen zu lassen und auf deren funktionen dann zu zugreifen. Dann Brauchst du dich nicht darum kümmern wie die Daten aus dem Programm ausgelesen werden und der andere Programmierer hat freie Wahl.

stefanahrens 15. Nov 2008 08:01

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Moin,


@SirThornberry:
Werde mir das mit DLL's Sonntag mal anschauen.

An eine Datei (z.B.: Ini) habe ich auch schonmal gedacht, nur da sprach das Argument der Festplattenzugiffe bei sekundenweiser Aktualisierung dagegen.

Aber ich werds der einfach halt halber mal mit ner Datei bauen und mal sehen wie es sich auswirkt.

MfG

stefanahrens 20. Nov 2008 16:49

Re: Daten zwischen C++ und Delphi-Programm austauschen
 
Moin :)

Ich bins mal wieder.
Über DLL scheint mir vom Grundgedanken her ganz nett zu sein. Nur leider bekomme ich es schon nicht hin zwischen zwei Delphianwednungen Variablen darüber auszutauschen.

Wenn ich Code minimieren möchte, leuchtet mir eine DLL ein, da die Funktionen aus der DL Werte aufnehmen,verarbeiten und zurückgeben.

Nun habe ich zwei Anwendungen. Die eine beinhaltet Variable a, die andere die Variable b. Wenn ich über die Dll aus Programm a, auf die Variable b zugreife, bekomme ich logischerweise eine Exception, da das Objekt nicht erstellt ist. Wenn nun aber beide Programme laufen, ich der DLL einen Pointer auf das Objekt 2 gebe, kann ich aus der A nicht auf diesen Zugreifen.

Von daher verstehe ich leider noch nicht ganz, wie ich darüber etwas austauschen soll :wall: Dort http://www.delphi-treff.de/tutorials/ habe ich das DLL Tut gelesen. Und auch länger gegeoogelt... nur leider keine passende Antwort gefunden.

MfG


//Edit: Ich lasse jetzt aus der dll heraus das Programm b erzeugen. Jetzt kann ich auf die gemeinsame Variable, bzw auf die Werte zugreifen. Mal sehen wie ich das jetzt nach c bekomme, sodass wenn der Haken "Tool" gesetzt ist, er das tool ertsellt :)
Ich bin da mal weiter dran :)


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