![]() |
PChar[2] := '0' -> Wirft ne AV :/
Hi, ich stehe gerade auf dem Schlauch, warum wirft folgendes eine AV? :
Delphi-Quellcode:
Hoffe mal das mir jemand helfen kann, danke im vorraus :)pc : pchar; pc := 'foobar'; pc[2] := '0'; |
Re: PChar[2] := '0' -> Wirft ne AV :/
Das verstehe ich auch nicht so ganz... :gruebel:
Delphi-Quellcode:
Das hier funktioniert. Aber sobald man an die Adresse schreiben will, gibts ne AV. Du könntest noch versuchen, den PChar in einen String zu konvertieren und dann zu bearbeiten.
var pc: pchar;
i: Integer; begin pc := 'foobar'; for I:=0 to 5 do showmessage(PChar(Integer(pc)+I)^); pc^ := '0'; end; |
Re: PChar[2] := '0' -> Wirft ne AV :/
So mache ich es zur zeit, sehe das ganze aber als umstaendlich an ;), es muss doch auch einfacher gehen :gruebel:
|
Re: PChar[2] := '0' -> Wirft ne AV :/
[SPEKULATION]'foobar' ist eine String-Konstante und wird vom Compiler in ein Datensegment gelegt auf das keine defaultmäßig keine Schreibrechte vorhanden sind. Wenn Du diese Konstante ändern willst mußt du schon (z.B. mit Hilfe von Klassen der Jedi) die Attribute dieses Segmentes ändern so das Schreibrechte vorhanden sind.[/SPEKULATION]
|
Re: PChar[2] := '0' -> Wirft ne AV :/
Das glaube ich nicht wirklich... Denn das dürfte nur bei Compileroptimierung der Fall sein, und mit {$O-} gehts auch nicht.
|
Re: PChar[2] := '0' -> Wirft ne AV :/
Zitat:
|
Re: PChar[2] := '0' -> Wirft ne AV :/
Was sollte das mit Optimierung zu tun haben?
Wahrscheinlich das gleiche Problem wie ![]() Zitat:
|
Re: PChar[2] := '0' -> Wirft ne AV :/
Delphi-Quellcode:
var
pc: PChar; OldProtect: dword; begin pc := 'foobar'; VirtualProtect(pc, 1, PAGE_READWRITE, OldProtect); pc[2] := '0'; ShowMessage(pc); VirtualProtect(pc, 1, OldProtect, OldProtect); // funkt nimmer pc[2] := 'o'; ShowMessage(pc); |
Re: PChar[2] := '0' -> Wirft ne AV :/
Das ist Schwachsinn. Und genau für solche Fälle hat Borland damals in die Longstrings ein Copy on Write-Demand eingebaut ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz