peek und poke????

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
~Evil~
User
Beiträge: 13
Registriert: Dienstag 6. Mai 2008, 20:29

Dienstag 6. Mai 2008, 20:38

moin mal ne frage,
hab schon das forum durchsucht aber nichts gefunden....
peek und poke gibts sowas ähnliches auch in python würde gern eine tmp datei aus dem speicher kopieren, weiß nicht wie das geht?!

MfG Evil
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 6. Mai 2008, 21:23

~Evil~ hat geschrieben: peek und poke gibts sowas ähnliches auch in python würde gern eine tmp datei aus dem speicher kopieren, weiß nicht wie das geht?!
Was genau meinst Du denn damit? Ich kenne Peek & Poke noch vom Commodore Basic V2.0 vom C64 ;)
Und was bedeutet "tmp datei aus dem Speicher kopieren"?
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Dienstag 6. Mai 2008, 22:18

Da hier wahrscheinlich keiner weiss was du meinst: Versuchs nochmal, am besten mit einem Beispiel.

Tmp datei aus dem Speicher kopieren ???
Peek?
Poke?
BlackJack

Mittwoch 7. Mai 2008, 07:23

@~Evil~: Falls damit die BASIC-Befehle gemeint sind, die man zum Beispiel vom C64 her kennt, würde mich auch interessieren wozu die benötigt werden.

Auf modernen Betriebsystemen hat jedes Programm seinen eigenen Adressraum, also könntest Du sowieso nur auf den Speicher des Programms zugreifen, in dem Du `peek()` und `poke()` verwendest. Also stellt sich die Frage worauf Du in einem Python-Programm zugreifen möchtest, an das man auf offiziellem Wege nicht auch einfacher und sicherer heran kommt!?

Für alle Unwissenden: ``peek(address)`` liefert das Byte an der angegebenen Adresse und ``poke(address, value)`` schreibt den Bytewert `value` and die angegebene Adresse.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mittwoch 7. Mai 2008, 07:58

BlackJack hat geschrieben: Für alle Unwissenden: ``peek(address)`` liefert das Byte an der angegebenen Adresse und ``poke(address, value)`` schreibt den Bytewert `value` and die angegebene Adresse.
Wobei das in BASIC V2.0 andersd aussehen müßte:

Code: Alles auswählen

poke 1024,65
print peek(1024)
Poke ist also ein Kommando, Peek eine Funktion. Aber ok, wird in anderen Basic-Dialekten vermutlich anders aussehen, oder Blacki wollte eine mögliche pythonische Art einführen ;-)

BTW: Dieses Board kann kein Sytnax-Highlighting für BASIC V2.0? :-D
BlackJack

Mittwoch 7. Mai 2008, 08:21

@Hyperion: Ja das mit dem Syntax-Highlighting ist mir auch schon negativ aufgefallen. 6502/6510-Assembler fehlt auch. ;-)
~Evil~
User
Beiträge: 13
Registriert: Dienstag 6. Mai 2008, 20:29

Mittwoch 7. Mai 2008, 17:02

es gib ein programm namens - Unlocker - und mit dem kann man z.b. temporäre dateien "unlocken" und soweit ich weiß zieht das programm die dateien ausm speicher!

und ich wollte sowas gerne mit python versuchen...

THX

Evil
sechsrad
User
Beiträge: 173
Registriert: Montag 31. März 2008, 17:09

Mittwoch 7. Mai 2008, 18:01

Für alle Unwissenden: ``peek(address)`` liefert das Byte an der angegebenen Adresse und ``poke(address, value)`` schreibt den Bytewert `value` and die angegebene Adresse.
da lachen ja die hühner bei deiner poke und peek-syntax.. :D
das weiss ich sogar besser und das heisst schon was :?


und woher:
ich progge noch mit 2 atari800xl und usb-stick-laufwerk :lol:
~Evil~
User
Beiträge: 13
Registriert: Dienstag 6. Mai 2008, 20:29

Mittwoch 7. Mai 2008, 18:09

meine frage war ob es sowas ähnliches gibt?!
lunar

Mittwoch 7. Mai 2008, 19:35

~Evil~ hat geschrieben:es gib ein programm namens - Unlocker - und mit dem kann man z.b. temporäre dateien "unlocken" und soweit ich weiß zieht das programm die dateien ausm speicher!
Das ``Unlocker'`-Programm, welches ich per Google gefunden habe, macht nichts anderes, als die Win-API Locks für geöffnete Dateien zu entfernen. Dafür benötigt man aber weder direkten Speicherzugriff noch irgendwelche wahnsinnigen PeekPoke-Sachen, dafür muss man nur die richtigen Win-API Funktionen aufrufen (die ich dir als Linux-User allerdings nicht sagen kann).

Direkter Zugriff auf den Speicher anderer Anwendungen oder gar den des Systems funktioniert eh auf keinem modernen Betriebssystem, weil die virtuellen Speicher nutzen, um Prozesse voneinander zu isolieren. Deswegen siehst du unter XP auch nicht gleich den BSoD, weil ein Programm abschmiert. Das aber hat Blackjack dir schon gesagt.

Ich habe das Gefühl, dass du keine Ahnung hast, was du da tun willst. Als gut gemeinten Tipp gebe ich dir deswegen mit, dich erstmal mit Grundlagen zu befassen, bevor du dich an sowas ranwagst.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mittwoch 7. Mai 2008, 20:09

sechsrad hat geschrieben: da lachen ja die hühner bei deiner poke und peek-syntax.. :D
das weiss ich sogar besser und das heisst schon was :?
Mit solchen Kommentaren machst Du Dir hier sicher viele Freunde ;-)
Wie ich schon mutmaßte wollte BlackJack das vermutlich pythonisch darstellen! Im ürbigen: DIE Peek & Poke Implementation gibt es sicherlich nicht, gel!
und woher:
ich progge noch mit 2 atari800xl und usb-stick-laufwerk :lol:
Schön!
lunar

Mittwoch 7. Mai 2008, 20:21

@Hyperion
Warum fütterst du ihn denn auch noch?
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mittwoch 7. Mai 2008, 20:26

lunar hat geschrieben:Warum fütterst du ihn denn auch noch?
Ich mach es zum Beispiel, weil ich sonst keine Haustiere habe ;-)
BlackJack

Mittwoch 7. Mai 2008, 20:33

Nur damit niemand auf die Idee kommt CBM BASIC V2 sei mächtiger als Python (ungetestet):

Code: Alles auswählen

from ctypes import c_ubyte, POINTER

c_ubyte_p = POINTER(c_ubyte)

def peek(address):
    return c_ubyte_p.from_address(address).contents.value

def poke(address, value):
    c_ubyte_p.from_address(address).contents.value = value
:-)
lunar

Mittwoch 7. Mai 2008, 21:01

Na toll, jetzt hast du ihn auf dumme Gedanken gebracht ... ^^
Antworten