![]() |
[D2010] Record darf nicht nil sein - E2010 Inkompatible Type
hallo zusammen,
seit neuestem verwende ich auch delphi 2010 und bin an einigen ecken auf die schnauze geflogen. nun wollte ich ein projekt aktualisieren und es eben reif für delphi 2010 machen, nur scheitere ich schon nach wenigen schritten. das was unter delphi 2007 noch ging, ist hier auf einmal ein fehler. hier nun der code der das problem macht:
Delphi-Quellcode:
und hier der compiler-fehler:
TImportDataRecord = record
{ hier stehen die einzelnen Datenfelder } end; TImportDataRecordItem = record Item : TImportDataRecord; end; PImportDataRecordItem = ^TImportDataRecordItem; // weiter unten im programm ... procedure ...; var pIdR : PImportDataRecordItem; begin { ... } pIdR.Item := nil; { ... } end;
Code:
mir ist schon klar, dass ich auch eine klasse nutzen könnte, aber das will ich nicht wirklich, denn das wirft zu viel durcheinander.
[DCC Fehler] frameSynchronizeWizard.pas(583): E2010 Inkompatible Typen: 'TImportDataRecord' und 'Pointer'
ps: diesen code verwende ich um daten in einem VirtualDrawTree anzeigen zu lassen. mfg der hai |
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
der Code dürfte in keiner Delphi-Version kompilierbar sein
Sollte der Code nicht eher so aussehen:
Delphi-Quellcode:
pIdR := nil;
|
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
Oder so?
Delphi-Quellcode:
PImportDataRecord = ^TImportDataRecord;
TImportDataRecord = record { hier stehen die einzelnen Datenfelder } end; TImportDataRecordItem = record Item : PImportDataRecord; end; PImportDataRecordItem = ^TImportDataRecordItem; // weiter unten im programm ... procedure ...; var pIdR : PImportDataRecordItem; begin { ... } pIdR^.Item := nil; { ... } end; |
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
Korrigiert mich wenn ich mich irre... Aber da sehe ich auf Anhieb mehrere Fehler:
Delphi-Quellcode:
1. pIdr is ein "Bush"-Pointer, er zeigt also an keinen definierten Ort im Speicher
TImportDataRecord = record
{ hier stehen die einzelnen Datenfelder } end; TImportDataRecordItem = record Item : TImportDataRecord; end; PImportDataRecordItem = ^TImportDataRecordItem; // weiter unten im programm ... procedure ...; var pIdR : PImportDataRecordItem; begin { ... } pIdR.Item := nil; { ... } end 2. Item ist kein Pointer sondern vom Type "record" bzw. TImportDataRecord. Wie soll da ein Pointer zugewiesen werden? Oder habe ich was verpasst? Hat das der "alte" Compiler wirklich so gefressen? Gruß Alex |
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
danke für eure antworten. ich werde da mal etwas testen müssen :gruebel:
unter delphi 2007 war der code compilierbar, da bin ich mir (fast) sicher. je länger ich mir das problem allerdings anschaue, desto eher denke ich, dass bernhards lösung die gesuchte ist. vielen dank jedenfalls schon mal! |
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
Zitat:
Habs grad in Delphi7 probiert und da ging es auch nicht |
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
ich wüsste aber nicht, dass ich an diesem code mal was geändert haben sollte :gruebel:
ich melde mich, wenn ich das problem gelöst habe... bin gerade selbst etwas verwirrt. |
Re: [D2010] Record darf nicht nil sein - E2010 Inkompatible
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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-2025 by Thomas Breitkreuz