Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249233 (10669)

| Suchen
| Zurück zur Übersicht

Autor | Thema: DDE- Datentausch zwischen Progr.
Klemens Funke
| Datum:29.12.01 20:16 (KF.Postfach@gmx.net) |
Hallo Zum Thema DDE habe ich eine Frage Wie kann ich zwischen zwei unabhänig von einander laufenden Profanprogrammen Daten austauschen. Mit Daten meine ich Variablen.(integer,float,string) Wer kann mir zu diesem Thema weiterhelfen. Die Dokumentation im Handbuch ist dafür etwas zu dürftig. Gruß Klemens
Achim Hebeisen
| Datum:19.01.02 17:07 (ahebeisen@alpha-trier.de) |
Nimm doch einfach die Zwischenablage als Schnittstelle und gib dabei den Variablennamen inkl Wert durch. Das kannst Du ja z.B. durch "|" trennen... achim
Sven Schmidts
| Datum: 20.01.02 11:50 (schmidts@flat2serv.de) |
Hallo, im Installationspacket vom PrfPad (http://www.prfpad.de) befindet sich im Unterverzeichnis "Vorlagen" eine Datei namens "SharedMem". Damit lässt sich das perfekt realisieren. Dies wird mit FileMappings realisiert und ist daher sicherer als der Weg über die Zwischenablage, da diese zwischenzeitlich vom User oder anderen Programmen geändert sein könnte. Der Source: ' PROFAN²-NT-TEAM-Vorlage ' Autor: Sven Schmidts, concept/design ' Titel: SharedMemory ' Beschreibung: Das Programm ermöglicht die gemeinsame Nutzung von Speicher. Anwendungen ' können so leichter Daten untereinander austauschen (Strings). ' Anmerkung: Benötigt RGH-PROFAN² ab Version 7.0 ' Copyright © 2000-2001 Sven Schmidts, schmidts@cdesign.de ' ' Prozeduren : ' - OpenMap MapName$, Size& ' Öffnet ein Mapping. MapName$ bezeichnet den Namen des Mappings. ' Size& bezeichnet die max. Größe in Byts, die gespeichert werden. ' Defaultwert ist 4096 Bytes sein, maximal ca 2 GByte. Anwendungen, die ' gemeinsam einen Speicher nutzen wollen, müssen als MapName$ dasselbe angeben. ' - CloseMap ' Schliesst das Mapping wieder ' - ReadStrFromMap ' Liest den momentanen Inhalt als String aus ' - WriteStrToMap Text$ ' Schreibt den String Text$ in das Mapping ' Def CreateFileMapping(6) !"KERNEL32","CreateFileMappingA" Def UnmapViewOfFile(1) !"KERNEL32","UnmapViewOfFile" Def MapViewOfFile(5) !"KERNEL32","MapViewOfFile" Def CloseHandle(1) !"KERNEL32","CloseHandle"; Declare HandleMap&, ViewPointer&, Buffer# Proc OpenMap Parameters MapName$, Size& HandleMap& = CreateFileMapping($FFFFFFFF,0, 402653188,0,Size&,Addr(MapName$)) If HandleMap& <= 0 MessageBox("Fehler beim erstellen des Mappings !","Fehler",16) Else ViewPointer& = MapViewOfFile(HandleMap&, 983071, 0, 0, 0) Case ViewPointer& = 0 : MessageBox("Fehler beim erstellen des Views !","Fehler",16) Endif EndProc Proc CloseMap UnMapViewOfFile(ViewPointer&) CloseHandle(HandleMap&) EndProc Proc ReadStrFromMap ' Lesen Declare Ergebnis$, OldBuffer& If ViewPointer& <> 0 Dim Buffer#, 512 OldBuffer& = Buffer# Buffer# = ViewPointer& Ergebnis$ = String$(Buffer#,0) Buffer# = OldBuffer& Dispose Buffer# EndIf Return Ergebnis$ EndProc Proc WriteStrToMap ' Schreiben Parameters Text$ Declare OldBuffer& If ViewPointer& <> 0 Dim Buffer#, Len(Text$)+1 OldBuffer& = Buffer# Buffer# = ViewPointer& String Buffer#,0 = Text$ Buffer# = OldBuffer& Dispose Buffer# EndIf EndProc ' Beispiel Programm ' Compileren und zweimal starten, austausch vom Text mittels "Lesen" / "Schreiben" ''cls ''Declare E%, Ende%, Lesen%, Schreiben%, Edit% ''Let Ende%= CreateButton(%Hwnd,"Ende",10,10,90,20) ''Let Lesen%= CreateButton(%Hwnd,"Speicher lesen",110,10,120,20) ''Let Schreiben%= CreateButton(%Hwnd,"Speicher schreiben",240,10,140,20) ''Let Edit% = CreateEdit(%Hwnd,"",10,40,600,22) '' ''OpenMap "TestMap", 4096 '' ''WhileNot E% ''SetFocus(Edit%) ''WaitInput '' If GetFocus(Ende%) '' Let E% = 1 '' ElseIf GetFocus(Lesen%) '' ReadStrFromMap '' SetText Edit%,$(0) '' ElseIf GetFocus(Schreiben%) '' WriteStrToMap GetText$(Edit%) '' EndIf ''''Wend ''CloseMap Mfg. Sven Schmidts

| Zurück zur Übersicht