| Autor |
Beitrag |
Lhid
      
Beiträge: 831
|
Verfasst: Sa 21.07.07 19:15
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert
Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: Sa 21.07.07 19:24
Du könntest doch nach den Stellen im Code in denen die Variable verändert wird reagieren:
Delphi-Quelltext 1: 2:
| inc(i); ShowMessage('i hat sich verändert'); |
|
|
Lhid 
      
Beiträge: 831
|
Verfasst: Sa 21.07.07 19:40
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert
Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: Sa 21.07.07 19:43
Wenn's zuviel Arbeit ist, dann schreib doch 'ne Prozedur:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure wa; begin ShowMessage('i hat sich verändert'); end; . . . inc(i); wa; |
|
|
Lhid 
      
Beiträge: 831
|
Verfasst: Sa 21.07.07 19:49
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert
Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Sa 21.07.07 19:49
Also das ganze über einen Timer zu realisieren ist wohl die schlechteste Lösung. Ich würde das genauso wie Calculon machen. Man könnte natürlich auch eine eigene Klasse deklarieren, die Variable als Property nutzen, und dann in der Write-Prozedur darauf reagieren, wobei ich das eher vermeiden würde.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 21.07.07 20:34
Wenn Du weißt, dass die Variable auf einer eigenen Speicher-Seite steht, kann man das ganze auch über Guard-Pages lösen (vorausgesetzt, man weiß, was man tut  Im Fall einer Guard-Page würdest Du bei jedem Zugriff auf die geschützte Speicherseite eine Low-Level-Exception bekommen, die Du auswerten (UND behandeln) müsstest.
Mit etwas mehr Aufwand könntest Du sogar mehrere Variablen auf die Guard-Page nehmen. Näheres Erklärt Dir uall sicherlich gern 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Lhid 
      
Beiträge: 831
|
Verfasst: So 22.07.07 14:06
Mich und bitte alle meine Beiträge löschen. Habe mich und meine Meinung stark verändert
Zuletzt bearbeitet von Lhid am Di 20.10.09 15:33, insgesamt 1-mal bearbeitet
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 22.07.07 15:16
Frag diesbezüglich uall. Ist aber eigentlich auch nur ein Bit bei VirtualProtect. Wie gesagt, uall hat damit mal nen EXE-Schutz geschrieben ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Sa 29.09.07 16:45
Ich würde VirtualProtect diesbezüglich aber nicht benutzen (dauert zu lange). Debugger machen das über Hardware Breakpoints. Da sollte google helfen. HW BPs kannst du mittels SetContext und den drx registern (dr0-dr7) setzen. insgesamt gibst 4 HW BPs (0-3 wenn ich richtig informiert bin, die andere geben die maske an, (on write, execute, read, byte, word, dword)).
Dann musst du nur noch einen Excpetionahndler installieren (z.b. per Hook auf ntdll.KiUserExceptionDispatcher (hieß glaub ich so oO)
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: Sa 29.09.07 17:37
Titel: Re: Integer während Prozess auf Veränderung überprüfen
Hi,
Lhid hat folgendes geschrieben: | Dort gibt es einen Integer.
Nun wird dieser Integer von mehreren Sachen beeinflusst.
Und wie kann ich nun überprüfen wann er sich ändert. |
Du koenntest den Integer mittels eines Prozeduraufrufs aendern (sprich: Mach 'ne Property mit Setter-Methode draus). Dann weisst Du, dass die einzige Moeglichkeit ihn zu Aendern im Aufruf der Prozedur besteht und brauchst dann nur dort zu ueberpruefen, ob der neue Wert <> dem alten ist.
twm
|
|