Naben zusammen,
Ich möchte mit Prog A etwas in den Speicher schreiben, und es per Pointer oder eben Adresse mit Prog B wieder auslesen.
Hab auch schon im Archiv gesucht, wurde aber nicht weiter ausgeführt, da in diesem Fall ein SendMessage_() ausreichte. Fällte bei mir aber flach.
Vielleicht hat ja jemand eine Idee.
Mit Dank im Voraus
Speicherbereich für alle?
Speicherbereich für alle?
Wer lesen kann, ist klar im Vorteil
MfG
strgalt
MfG
strgalt
Fragmente aus jaPBe:
Senden
Empfangen (in windowcallback)
Senden
Code: Alles auswählen
Procedure SendData(ziel,Type,adr,len)
cd.COPYDATASTRUCT
cd\dwData=Type
cd\cbData=len
cd\lpData=adr
ProcedureReturn SendMessage_(ziel,#WM_COPYDATA,MainWin,cd)
EndProcedureCode: Alles auswählen
case #WM_COPYDATA
*cd.COPYDATASTRUCT=lParam
Result=#False
Select *cd\dwData
Case #WMCD_InsertText
SCI_BeginUndoAction()
SCIReplaceText(SCI_GetSelectionStart(),SCI_GetSelectionEnd(),*cd\lpData,#True)
Pos=SCI_GetCurrentPos()+*cd\cbData-1
SCI_GotoPos(Pos)
ColorWordUnderCursor=#True
ColoringLine(#True,-1,SCI_LineFromPosition(Pos))
ColorWordUnderCursor=#False
If AutoInsert=#True
;SCI_SetAnchor(Pos)
StartLine=SCI_LineFromPosition(Pos-*cd\cbData-1)
EndLine=SCI_LineFromPosition(Pos)
If StartLine<EndLine
ChangeIndentationLines(StartLine-1,EndLine)
EndIf
EndIf
SCI_EndUndoAction()
Result=#True
Case #wmCD_ReplaceCompleteText
NoFoldChangeProtection=#True
SCI_SetText(*cd\lpData)
NoFoldChangeProtection=#False
SCI_GotoPos(*cd\cbData-1)
Result=#True
Case #wmcd_ReplaceCurrentLine
line=SCI_LineFromPosition(SCI_GetCurrentPos())
SCIReplaceText(SCI_PositionFromLine(line),SCI_GetLineEndPosition(line),*cd\lpData,#True)
SCI_GotoPos(SCI_GetLineEndPosition(line))
Result=#True
Case #wmcd_NewText
NeedFreePanel()
SCI_SetText(*cd\lpData)
SCI_GotoPos(*cd\cbData-1)
Result=#True
Case #WMCD_OpenFile
;{Datei öffnen
If *cd\lpData
autoload$= PeekS(*cd\lpData,*cd\cbData)
LoadSourceCodeReal(autoload$)
AddRecentFile(autoload$)
SetForegroundWindow_(MainWin)
EnableWindow_(MainWin,#True)
If IsZoomed_(MainWin)
ShowWindow_(MainWin, #SW_MAXIMIZE)
Else
ShowWindow_(MainWin, #SW_RESTORE)
EndIf
Result=#True
EndIf
;}
EndSelect
Result=#TrueCodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Hallo,
ja, dass mit SendMessage is mir klar. Leider geht das nicht. Die Daten die ich da verschiffen will sind zu viele (können bis zu 700 000 Datensätze a 17 Felder sein). Außerdem spielt die WinProc da nicht mehr mit..... ääää, ist so, dass Prog A dann mitteilen muss ob es die Daten abgearbeitet hat und muss neue anfordern. Dann schickt Prog B wieder Daten rüber usw... Da hängts dann, weil zwischenher auch noch einiges gemacht wird. Die WinProc machte mit der SendMessage schon hier Probs, so dass ich schon mit PostMessage knallen muss.
Es geht leider nicht anders... ich muss von Prog A auf eine Adresse zugreifen, die ich in Prog B per GlobalAlloc - oder per PB - alloc. habe.
Ich hätt´s auch lieber ohne den ganzen Zinover, aber
1. kann PB zum einen nichteinmal auf 2 Stellen nachkommer richtig rechnen geschweige runden,
2. gibts kein Double, denn ich für einen Timestamp vom SQL- Server zu weiteren Berechnungen dringend brauche und
3. müssen die Daten eigentlich in Excel. XML langt für meine Sache nicht aus weil ich im Sheet Falten verwende, und auf die Excel- Lib kann man ja nicht zugreifen.
Also muss ich die Daten von PB nach VB verschieben, dort Pipifaxberechnungen vornehmen, die PB nicht kann (und wenns nur Kostenberechnungen sind), und von VB gehts halt dann weiter nach Excel.
Und wenn PB wenigstens nen Float und keinen Loati hätte, dann würde ich mich wahrscheinlich noch mit der Zwischenablage zufrieden geben... aber naja, mal guggen, wie lange Fred da noch drummherum redet "dass währe halt überall und immer so"... ja klar bei einer Genauigkeit von 4 B is mir das schon klar - ein Wohl auf QB und GW, die konnten das schon vor 20 Jahren.
Aber vielleicht fällt Dir (oder gerne auch Euch) ja zu dem ein oder anderem noch was ein... muss doch was geben, mit dem ich in der Lage bin, auf einen Speicherbereich zuzugreifen, der in einem anderen Programm alloc. wurde.
ja, dass mit SendMessage is mir klar. Leider geht das nicht. Die Daten die ich da verschiffen will sind zu viele (können bis zu 700 000 Datensätze a 17 Felder sein). Außerdem spielt die WinProc da nicht mehr mit..... ääää, ist so, dass Prog A dann mitteilen muss ob es die Daten abgearbeitet hat und muss neue anfordern. Dann schickt Prog B wieder Daten rüber usw... Da hängts dann, weil zwischenher auch noch einiges gemacht wird. Die WinProc machte mit der SendMessage schon hier Probs, so dass ich schon mit PostMessage knallen muss.
Es geht leider nicht anders... ich muss von Prog A auf eine Adresse zugreifen, die ich in Prog B per GlobalAlloc - oder per PB - alloc. habe.
Ich hätt´s auch lieber ohne den ganzen Zinover, aber
1. kann PB zum einen nichteinmal auf 2 Stellen nachkommer richtig rechnen geschweige runden,
2. gibts kein Double, denn ich für einen Timestamp vom SQL- Server zu weiteren Berechnungen dringend brauche und
3. müssen die Daten eigentlich in Excel. XML langt für meine Sache nicht aus weil ich im Sheet Falten verwende, und auf die Excel- Lib kann man ja nicht zugreifen.
Also muss ich die Daten von PB nach VB verschieben, dort Pipifaxberechnungen vornehmen, die PB nicht kann (und wenns nur Kostenberechnungen sind), und von VB gehts halt dann weiter nach Excel.
Und wenn PB wenigstens nen Float und keinen Loati hätte, dann würde ich mich wahrscheinlich noch mit der Zwischenablage zufrieden geben... aber naja, mal guggen, wie lange Fred da noch drummherum redet "dass währe halt überall und immer so"... ja klar bei einer Genauigkeit von 4 B is mir das schon klar - ein Wohl auf QB und GW, die konnten das schon vor 20 Jahren.
Aber vielleicht fällt Dir (oder gerne auch Euch) ja zu dem ein oder anderem noch was ein... muss doch was geben, mit dem ich in der Lage bin, auf einen Speicherbereich zuzugreifen, der in einem anderen Programm alloc. wurde.
Wer lesen kann, ist klar im Vorteil
MfG
strgalt
MfG
strgalt
mittels der process-library von mir isses möglich auf andere Programme Speicher zuzugreifen.
In Vb kannst du den allokieren und per Sendmessage den zeiger transferieren.
ach, wenn excel ne COM-DLL bereitstellt (und das macht sie) um auf ihre spalten/Zeilen etc. zuzugreifen, dann kann man auch mit PB darankommen. Such mal nach dem COM-IMPORTER von AXEND, irgendwo gibts da auch ein excel-gerüst:
http://purebasic.myforums.net/viewtopic.php?t=11031
In Vb kannst du den allokieren und per Sendmessage den zeiger transferieren.
ach, wenn excel ne COM-DLL bereitstellt (und das macht sie) um auf ihre spalten/Zeilen etc. zuzugreifen, dann kann man auch mit PB darankommen. Such mal nach dem COM-IMPORTER von AXEND, irgendwo gibts da auch ein excel-gerüst:
http://purebasic.myforums.net/viewtopic.php?t=11031
Rings hat geschrieben:ziert sich nich beim zitieren
@Rings
ja, dass währe schon mal nicht schlecht wenn das mit der Lib funzt... Nur kann ich keine UserLibs einbinden wenn ich den Source nicht hab.
Da ich annehme das du den Source für dich behalten willst (oder vielleicht helfen auch ein paar Taler
) würde ich mich auch mit n´paar Tipps oder so zufrieden geben.
ja, dass währe schon mal nicht schlecht wenn das mit der Lib funzt... Nur kann ich keine UserLibs einbinden wenn ich den Source nicht hab.
Da ich annehme das du den Source für dich behalten willst (oder vielleicht helfen auch ein paar Taler
Wer lesen kann, ist klar im Vorteil
MfG
strgalt
MfG
strgalt
hast du denn den Source der PB-Libs ?strgalt hat geschrieben:@Rings
ja, dass währe schon mal nicht schlecht wenn das mit der Lib funzt... Nur kann ich keine UserLibs einbinden wenn ich den Source nicht hab.
Da ich annehme das du den Source für dich behalten willst (oder vielleicht helfen auch ein paar Taler) würde ich mich auch mit n´paar Tipps oder so zufrieden geben.
Rings hat geschrieben:ziert sich nich beim zitieren