 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
software
Anmeldungsdatum: 19.02.2007 Beiträge: 14
|
Verfasst am: 20.02.2007, 21:16 Titel: DOSMEMGET |
|
|
DOSMEMGET , gibt es so einen ähnlichen befehl auch in freebasic um auf das ram zuzugreifen?
mfg _________________ freebasic lebt |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 20.02.2007, 21:26 Titel: |
|
|
Öhm, naja, also, nimm dir ne Variable, dimensionier die unendlich groß und schon hast du ein Stück Speicher... ansonsten musst du dich mit der Kernel32.dll und MemMaps befassen... wenn du Windows nutzt... |
|
Nach oben |
|
 |
software
Anmeldungsdatum: 19.02.2007 Beiträge: 14
|
Verfasst am: 20.02.2007, 22:17 Titel: |
|
|
ich möchte mit einem gestarteten programm irgendwo im speicher bystes ablegen und von einem anderen gestarteten programm wieder einlesen.
gibt es denn nirgendwo im computer diesen bereich, den ich von freebasic einfach erreiche?
mfg _________________ freebasic lebt |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 20.02.2007, 22:20 Titel: |
|
|
Ja, da musst du ne Speichermap reservieren, und so flaggen, dass sie Publik ist. Irgendwo hat ich da ein Beispiel... bei Gelegenheit such ich das ma, kann aber spät werden  |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 20.02.2007, 22:21 Titel: |
|
|
Volta hatte dazu für Windows mal ein Beispiel gepostet. Stichwort: Memory Mapped Files. (Oder so. xD) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
software
Anmeldungsdatum: 19.02.2007 Beiträge: 14
|
Verfasst am: 20.02.2007, 22:22 Titel: |
|
|
danke, werde mal suchen.
mfg _________________ freebasic lebt |
|
Nach oben |
|
 |
software
Anmeldungsdatum: 19.02.2007 Beiträge: 14
|
Verfasst am: 20.02.2007, 22:23 Titel: |
|
|
pmedia danke für dein angebot, wäre toll wenn du so etwas findest.
mfg _________________ freebasic lebt |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 20.02.2007, 22:32 Titel: |
|
|
Es ist zwar Profan, erfüllt aber den gleichen Zweck, sind nur 4 oder 5 Zeilen eigentlicher Code und sind schnell übertragen, da Profan sehr schnell verstehbar ist.
Und hier isser (aber nur weil ich wusste wo der Code war):
Code: |
' 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 |
Wie am Kopf zu erkennen ist: DIES IST NICHT EIN PROGRAMM VON MIR! |
|
Nach oben |
|
 |
software
Anmeldungsdatum: 19.02.2007 Beiträge: 14
|
Verfasst am: 20.02.2007, 22:57 Titel: |
|
|
he, danke für deine mühe. werde ihn umsetzen.
mfg _________________ freebasic lebt |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|