Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Invalid Pointer mit New(), ohne new() ok? (https://www.delphipraxis.net/110549-invalid-pointer-mit-new-ohne-new-ok.html)

Jackie1983 19. Mär 2008 20:23


Invalid Pointer mit New(), ohne new() ok?
 
hi,

habe einen Pointer.
Wenn ich vorher New(meinpointer) schreibe und dann den pointer "fülle" bekomme ich invalid pointer. wenn ich es ohne new machen ist alles ok. Allerdings wenn ich das Programm dann schließe bekomme ich eine Zugriffsverletzung bei Adresse 000000000.

Hier mal ein paar zeilen
Delphi-Quellcode:
var
  job : string;
  daten : pointer;
begin
  job := füllenmitdaten;  
  new(daten);
  Move(PChar(Job)^,TMeinRec(Daten^),sizeof(TMeinRec)); //<- Fehler
end;

SirThornberry 19. Mär 2008 20:25

Re: Invalid Pointer mit New(), ohne new() ok?
 
wieviel byte belegt TMeinRec? Im Moment werden mit new nur sizeof(pointer) Byte angefordert.

1234588 19. Mär 2008 20:33

Re: Invalid Pointer mit New(), ohne new() ok?
 
getmem(p, sizeof(TMeinRec));

sollte funktionieren

SirThornberry 19. Mär 2008 20:36

Re: Invalid Pointer mit New(), ohne new() ok?
 
new würde auch funktionieren wenn anstelle von Pointer, PMeinRect verwendet würde

Jackie1983 19. Mär 2008 20:39

Re: Invalid Pointer mit New(), ohne new() ok?
 
jep mit getmem funktioniert es nur stimmen die daten im record nicht.

Das ist do so richtig?
Move(PChar(Job)^,TMeinRec(Daten^),sizeof(TMeinRec) );

1234588 19. Mär 2008 20:40

Re: Invalid Pointer mit New(), ohne new() ok?
 
Zitat:

Zitat von SirThornberry
new würde auch funktionieren wenn anstelle von Pointer, PMeinRect verwendet würde

stimmt. ist auch viel logischer als einen untypisierten pointer zu verwenden

jbg 19. Mär 2008 20:50

Re: Invalid Pointer mit New(), ohne new() ok?
 
Bist du sicher, dass PChar der richtige Typ ist. Bedenke, dass ab Delphi 2008 dieser ein PUnicodeChar ist und somit ein Element 2 Bytes belegt und nicht wie bei PAnsiChar nur 1 Byte.

Jackie1983 19. Mär 2008 20:50

Re: Invalid Pointer mit New(), ohne new() ok?
 
ok, habe es hinbekommen, hatte ein Problem mit der Übergabe des Pointers.....
immer diese Pointer ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz