Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Das x bei for x in y do ist Readonly (https://www.delphipraxis.net/181975-das-x-bei-x-y-do-ist-readonly.html)

Kostas 22. Sep 2014 13:12

Das x bei for x in y do ist Readonly
 
Hallo Zusammen,

es ist mir noch nicht aufgefallen, anscheinend habe ich es noch nicht in dieser Form gebraucht.

Das item(aRecord) aus der Liste einer For Schleife ist immer Readonly.
Gibt es eine Möglichkeit die Items zu beschreiben oder muss ich eine normale For Schleife verwenden?
Delphi-Quellcode:
for i := 0 to Length(aRecordArray)-1 do

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type
  TaRecord = Record
               ID:integer;
               Namen:String;
             End;
type
  TaRecordArray = Array of TaRecord;

  var aRecordArray:TaRecordArray;
      aRecord:TaRecord;
begin
  for aRecord in aRecordArray do
  begin
    aRecord.ID := 0;
    aRecord.Namen := '';
  end;
end;
Gruß Kostas

Sir Rufo 22. Sep 2014 13:16

AW: Das x bei for x in y do ist Readonly
 
Es ist nich viel besser ;)

Selbst wenn das nicht ReadOnly wäre würdest du die Änderungen in eine Kopie des Records schreiben.

Kostas 22. Sep 2014 13:18

AW: Das x bei for x in y do ist Readonly
 
Das wollte ich natürlich nicht. Ich würde gerne das Array mit Werten initialisieren.
Geht es also nur über die klassische Methode oder?

Sir Rufo 22. Sep 2014 13:30

AW: Das x bei for x in y do ist Readonly
 
Delphi-Quellcode:
var
  LRec : TaRecord;
  LIdx : integer;
begin
  LRec.ID := 0;
  LRec.Namen := '';
  for LIdx := low( aRecordArray ) to high( aRecordArray ) do
    aRecordArray := LRec;
end;

DeddyH 22. Sep 2014 13:41

AW: Das x bei for x in y do ist Readonly
 
Delphi-Quellcode:
for LIdx := Low(aRecordArray) to High(aRecordArray) do
  aRecordArray[LIdx] := Default(TaRecord);

himitsu 22. Sep 2014 13:49

AW: Das x bei for x in y do ist Readonly
 
Oder du schreibst dir einen Enumerator, welcher die die Array-Items als Pointer zurückgibt. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 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