Hallo,
in C gibt es das Konzept des Pointers auf eine Variable.
Kann man sowas auch in VBA machen?
Danke
Laika
Hallo,
in C gibt es das Konzept des Pointers auf eine Variable.
Kann man sowas auch in VBA machen?
Danke
Laika
Hallo Laika,
ja, gibt es. Ist aber in VBA undokumentiert.
StrPtr und VarPtr.
Hier eine (leider etwas dünne) Seite on MS:
http://msdn.microsoft.com/de-de/library/bb978983.aspx
Anwedungsbeispiele gibt es z.B. hier:
http://www.activevb.de/cgi-bin/suche/search.pl
Du solltest auch bei bei VB-fun, VB@rchive oder wie sie sonst noch heißen nachschauen.
Gruß, Andreas
VarPtr StrPtr ObjPtr u.ä.
in C gibt es das Konzept des Pointers auf eine Variable.
Kann man sowas auch in VBA machen?
Hallo Laika,
vor einiger Zeit hat mich das auch mal interessiert. Suche mal so:
http://www.pic-upload.de/view-21914034/kwSucheVarptr…
in w-w-w. Dann weißt du was ich damals in etwa zum Thema gewußt bzw. nicht gewußt habe/hatte.
Interessant ist auch dieser Link für dich:
http://msdn.microsoft.com/de-de/library/bb978983.aspx
Dort steht u.a.
„Diese Funktionen [die drei Fktn. hier im Betreff] sind derzeit in Visual Basic im VB A -Objekt (in der runtime-Datei MSVBVM?.DLL also) selbst implementiert, im Objektkatalog aber erst sichtbar, wenn Sie darin die Anzeige ausgeblendeter Einträge aktivieren.“
Könnte also sein daß nur, wenn überhaupt, die drei in VBA fktnrn und die anderen nur in VB.
Bitte um Rückmeldung wenn du da codierst und testest, z.B. mit API-Copymemory u.ä.
Auch feedback was in VBA geht bzw. nur in VB geht.
Hast du VB? Ich habe leider nur VB 5.0, damit geht schon einiges nicht was erst mit VB 6.0 geht.
Gruß
Reinhard
Danke Euch beiden …
… werde aber wohl zurückhaltend mit der Benutzung sein, da laut Webseite „… ein falscher Umgang mit Speicherbereichen fatal sein und die Nutzung nur erfahrenen Entwicklern geraten werden kann (selbst dann nur, wenn eine wirkliche Notwendigkeit besteht).“
Gruss und schönen Sonntag
Laika
Schnickschnack, stell dich nicht so an
… werde aber wohl zurückhaltend mit der Benutzung sein, da
laut Webseite „… ein falscher Umgang mit Speicherbereichen
fatal sein und die Nutzung nur erfahrenen Entwicklern geraten
werden kann (selbst dann nur, wenn eine wirkliche
Notwendigkeit besteht).“
Hallo Laika,
lass dich doch nicht von so Kleinigkeitchen abschrecken
Hättest du gemäß dem Bildchen in w-w-w gesucht sind da auch Beitragsfolgen von/mit mir. Ich habe damals völlig unverkrampft probiert und probiert. Nicht nur da ich wohl damals diesen MS-Link wohl nicht kannte, auch mit Kenntnis davon hätte ich das getan oder/und würde das auch jetzt tun.
Was soll da schon geschehen? Ist doch nur der Arbeitsspeicher *denk* Der ist evtl. zerschossen, also irgendwelche Bytes stehen da wo sie Probleme machen. Na und, muß doch nach Neustart „weg“ sein *denk2*
Achaja, sehr wichtig, mache ich da einen Denkfehler? Dann bitte her mit Informationen, Dankeschön.
Auch vor Eingriffen in die Registry, egal manuell oder mittels Vba-Code wird gewarnt. Na und, ich nehm sowas zur Kenntnis, fertig.
Natürlich, bei kleineren, sehr überschaubaren Eingriffen, mache ich das einfach so. Bei größeren, komplexeren Eingriffen sichere ich vorher die gesamte Registry mehrfach, auf der Festplatte,auf einem Stick u/o.ä.
Ich setze vorher einen Systemwiederherstellungspunkt.
Die Dateien User.dat uns System.dat werden auch vorher gesichert. Nach meiner Kenntnis besteht die Win-Registry aus diesen beiden Dateien. Sollte das in höheren mir unbekannten Win-Versionen anders sein bitte ich auch sehr um entsprechenden Hinweis, dann recherchiere ich das, Dankeschön.
PS: warum hast du eigentlich angefragt nach Pointern? Was hast du vor?
Soweit ich mich erinnere wollte ich u.a. „damals“ erkunden, (ohne Notwendigkeit, einfach wissen wollen) ob ich mit varptr usw. aus einem Array wie MeinArray(5,5,5) je nach Code z.B. nur die zweite 5, also 6 Werte in MeinArray2(5) rüberkopieren kann.
(ja, ich weiß wie ein Array gespeichert ist, sooo einfach ist das rüberkopieren nicht aber machbar)
Gruß
Reinhard
Hallo Reinhard,
Was soll da schon geschehen? Ist doch nur der Arbeitsspeicher
*denk* Der ist evtl. zerschossen, also irgendwelche Bytes
stehen da wo sie Probleme machen. Na und, muß doch nach
Neustart „weg“ sein *denk2*Achaja, sehr wichtig, mache ich da einen Denkfehler? Dann
bitte her mit Informationen, Dankeschön.
ImPrinzip hast du recht mit deiner Überlegung.
Dumm wirds nur wenn du z.B. Teile des Dateisystems überschreibst, dann können im dümmsten Fall auch die Daten auf der Festplatte weg sein.
Es kann aber kaum etwas geschehen, was sich nicht mit einer Neuinstallation, bzw. Backup, wieder herstellen lässt.
MfG Peter(TOO)
Hallo Peter,
danke, daß du dich einmischst, ich weiß vom Mitlesen deiner Beiträge in hiesigen Programmierbrettern daß du auch da sehr kompentent bist wie in allem Elektrischen u.v.m.
Was soll da schon geschehen? Ist doch nur der Arbeitsspeicher
*denk* Der ist evtl. zerschossen, also irgendwelche Bytes
stehen da wo sie Probleme machen. Na und, muß doch nach
Neustart „weg“ sein *denk2*Achaja, sehr wichtig, mache ich da einen Denkfehler? Dann
bitte her mit Informationen, Dankeschön.ImPrinzip hast du recht mit deiner Überlegung.
Schon mal gut das zu hören Also liege ich nicht völlig falsch *gg*
Dumm wirds nur wenn du z.B. Teile des Dateisystems
überschreibst, dann können im dümmsten Fall auch die Daten auf
der Festplatte weg sein.
Die Daten sind echt verschwunden/überschrieben?
Oder meinst du daß man durch copymemory evtl. sowas wie die FAT abändern könnte? Ich schreibe FAT da ich nicht weiß wie das mit NTFS läuft.
Achja, wichtig für dich, ich will keinesfalls daß du mir mit viel Aufwand deinerseits FAT, NTFS, oder was es derzeit aktuell so gibt, erläuterst, will ich das wissen kann ich mich ja im Internet schlau machen und dann nur noch sehr gezielt Detailfragen bei Unklarheiten/Nicht verstanden stellen. Mir langt/mich erfreut es wenn du so nett bist und das ganz im Groben erläuterst.
Zurück zur FAT, da kannte ich das vor Jahrzehnten so, in dieser Tabelle stehen alle Dateinamen und die Einsprungadresse in diese Dateien. Ist die FAT „versemmelt“ gibt es da wohl noch eine FAT2. Ist die auch „futsch“ so sind die Daten der Dateien schon noch auf der Festplatte aber keiner weiß mehr wo genau welche Einzel-„Brocken“ einer jeweiligen Datei auf der FP stehen.
Meintest du so etwas? Oder doch so daß man mit Copymemory auch bestehende Dateien auf der FP "attackieren kann?
Es kann aber kaum etwas geschehen, was sich nicht mit einer
Neuinstallation, bzw. Backup, wieder herstellen lässt.
Für mich völlig klar daß ich da nachfragen muß , Was bedeutet „aber kaum“ genauer? Kann ich wirklich mit z.B. Copymemory einen solchen Schaden anrichten daß dann eine komplette Neuinstallation (incl. Format C: /s) scheitern würde?
Btw. da ich grad dich an der Strippe hab, Vor Jahrzehnten hatte ich eine sehr informative Liste (zu Dos-Zeiten) was alles nacheinander bei einem Bootvorgang abgearbeitet wird.
Kennst du solche eine Liste für Win XP und/oder andere Win-Versionen? Das wäre echt Klasse.
Soweit ich mich zurückerinnere wird zuerst das Setup des Rechners abgearbeitet wo z.B. steht mit welchem Laufwerk zuerst versucht versucht werden soll zu booten.
Dann gibt es 64 Bytes wo letztlich steht zu welcher Adresse gesprungen werden soll um das Betriebssystem zu laden.
Die Maschinenbefehle die dort stehen werden dann abgearbeitet. Irgendwann, bei Dos wird dann die Config.sys bearbeitet, dann die Autoexec.bat usw.
Wie ist das heutzutage?
Gruß ^ Danke
Reinhard
Hallo Reinhard,
Dumm wirds nur wenn du z.B. Teile des Dateisystems
überschreibst, dann können im dümmsten Fall auch die Daten auf
der Festplatte weg sein.Die Daten sind echt verschwunden/überschrieben?
Oder meinst du daß man durch copymemory evtl. sowas wie die
FAT abändern könnte? Ich schreibe FAT da ich nicht weiß wie
das mit NTFS läuft.
Das Dateisystem führt einen Cache für die Festplatte, also es werden Sektoren in den Hauptspeicher geladen, dort verändert und nach einer gewissen Zeit wieder auf die Platte geschrieben.
Du kannst jetzt zufällig etwas im Cache überschreiben, dann schreibt das Dateisystem irgendwelchen Quatsch in die FAT oder eine Datei. Oder du veränderst zufällig die Variable mit der Sektornummer und dann werden die Daten an eine Ganz falsche Stelle geschrieben. Setzt du die Blocknummer auf 0 wird dann in den MBR geschrieben, dann sind sogar die Partitionen weg.
Oder du überschreibst irgendeinen Code-Bereich. Dann weiss auch keiner wie sich das System verhalten wird, bzw. SASSER hat diesen Trick gezielt ausgenutzt
OK, Aktuelle Betriebssysteme sollten die Systembereiche von der eigentlichen Anwendung abtrennen, sodass dies nicht passieren sollte …
Es kann aber kaum etwas geschehen, was sich nicht mit einer
Neuinstallation, bzw. Backup, wieder herstellen lässt.Für mich völlig klar daß ich da nachfragen muß , Was
bedeutet „aber kaum“ genauer? Kann ich wirklich mit z.B.
Copymemory einen solchen Schaden anrichten daß dann eine
komplette Neuinstallation (incl. Format C: /s) scheitern
würde?
Es besteht immer die Möglichkeit, dass Hardware umprogrammiert wird.
Schon bei den erstem IBM-PCs gab es die Möglichkeit die Bildfrequenz des Monitor hochzuschrauben. Die alten grünen Monitore konnten dann durchbrennen. Es gab da auch damals entsprechende Malware.
Bei heutigen Monitoren geht das nicht mehr, diese schalten ab, bzw. zeigen eine Fehlermeldung, wenn sie mit unpassenden Frequenzen gefüttert werden.
Im Prinzip kann man auch versehentlich die Bustakte umstellen. Heutige CPUs haben einen Thermoschutz, aber die alten konnte man so überhitzen und die CPU konnte dadurch durchbrennen (Viele kennen das Problem vom Übertakten).
Dann sind da noch diverse Spannungen von CPU und RAM, welche heute auch programmierbar sind.
Selbiges gilt aber auch für das RAM, den Chipsatz und Interface-Karten.
Allerdings ist bei CMOS die Stromaufnahme eine direkte Funktion der Frequenz, durch eine Takterhöhung kann auch eine der Spannungsversorgungen überhitzen und bleibende Schäden davontragen.
Was da alles schief gehen kann, kann man auf den Seiten der Overclocker nachlesen.
Das sind jetzt Worst Case Szenarien, welche aber nicht gänzlich ausgeschlossen werden können!
MfG Peter(TOO)