![]() |
Datenbank: SQlite • Version: 3.0 • Zugriff über: Firedac
Iteration durch Datenmengen mit for-Anweisungen
Hallo,
bei mir klappt die Iteration durch Datenmengen nicht, obwohl es laut DelpheHilfe funktionieren soll:
Delphi-Quellcode:
Mein Code sieht so aus:
[B]Iteration durch Datenmengen mit for-Anweisungen[/B]
Delphi unterstützt die for-in-Syntaxkonstruktion für die Iteration durch Datenmengen. Der Compiler erkennt das folgende Iterationsmuster für Datenmengen: for Record in Dataset do Smth; wobei Record die TDataSet-API repräsentiert. Record kann problemlos mit Datenmenge gleichgesetzt werden. Im folgenden Codefragment wird durch eine Datenmenge in Delphi iteriert. Der Beispielcode zeigt, wie die Werte der Spalte "Name" in ein Memo-Steuerelement ausgegeben werden. var ds: TDataSet; // FQuery1.SQL.Text := 'SELECT Name FROM Table1'; Memo1.Lines.Clear; for ds in FDQuery1 do Memo1.Lines.Add(ds.FieldByName('Name').AsString);
Delphi-Quellcode:
Klar geht es auch anders, aber es wäre so schöner und einfacher. Und wenns in der Hilfe steht, frage ich mich, warum es bei mir nicht funktioniert.
function TDataModuleEBilanz.buildTaxVersionRecordListe: TTaxVersionRecordListe;
var DS: TDataSet; begin Result:= TTaxVersionRecordListe.create; FDQuery1.Open('select * from Taxonomie'); for DS in FDQuery1.GetRow() do begin showmessage(DS.FieldByName('Version').AsString) end; end; Vielen Dank für eure Hilfe Gruß Peter Ps.: ich weißt nicht, ob das Thema hier überhaupt hingehört |
AW: Iteration durch Datenmengen mit for-Anweisungen
for ds in FDQuery1 do <> for DS in FDQuery1.GetRow() do
|
AW: Iteration durch Datenmengen mit for-Anweisungen
danke für Deine schnelle Antwort, ich habs umgesetzt, bekomme aber folgende Fehlermeldung:
[dcc64 Fehler] Model.DM.Access.EBilanz.pas(51): E2431 for-in-Anweisung arbeitet nicht mit Kollektionstyp 'TFDDatSRow', weil 'TFDDatSRow' kein Element für 'GetEnumerator' enthält oder darauf nicht zugegriffen werden kann So sieht mein Code jetzt aus:
Delphi-Quellcode:
Am Anfang der Zeile ein rotes Ausrufezeichen und das do ist gekräuselt unterstrichen
FDQuery1.Open('select * from Taxonomie');
for DS in FDQuery1.GetRow() do begin end; |
AW: Iteration durch Datenmengen mit for-Anweisungen
Das ".getRow" muss weg.
|
AW: Iteration durch Datenmengen mit for-Anweisungen
danke für die Antwort,
aber wenn ich es so mache:
Delphi-Quellcode:
bekomme ich diese Fehlermeldung:
var
DS: TDataSet; begin FDQuery1.Open('select * from Taxonomie'); for DS in FDQuery1 do begin end; [dcc64 Fehler] Model.DM.Access.EBilanz.pas(52): E2010 Inkompatible Typen: 'TDataSet' und 'TComponent' |
AW: Iteration durch Datenmengen mit for-Anweisungen
Ich habe auch auf die Schnelle keinen in Delphi eingebauten (spezialisierten) Enumerator für TFdQuery / TDataSet gefunden. Es gibt aber Webseiten, auf denen ein solcher erstellt wird.
|
AW: Iteration durch Datenmengen mit for-Anweisungen
Danke für Deine Hilfe. Ich werde mal schauen, ob ich selber einen Erstellen kann.
Interessant ist nur, dass die Hilfe das ausweist und später noch der Hinweis: Liste der unterstützten Klassen. Die folgenden Klassen und ihre Nachkommen unterstützen die for-in-Syntax: System.Classes.TList System.Classes.TCollection System.Classes.TStrings System.Classes.TInterfaceList System.Classes.TComponent Vcl.Menus.TMenuItem Vcl.ActnList.TCustomActionList Vcl.ComCtrls.TListItems Vcl.ComCtrls.TTreeNodes Vcl.ComCtrls.TToolBar Data.DB.TFields Data.DB.TDataSet OK, ich hatte schon befürchtet, dass es nicht geht, aber wollte ausschließen, dass ich etwas übersehen haben Vielen Dank |
AW: Iteration durch Datenmengen mit for-Anweisungen
Die Doku ist leider übrig geblieben, nachdem das Feature vor dem Release gecancelt wurde. Eine alternative Implementierung findest du hier:
![]() |
AW: Iteration durch Datenmengen mit for-Anweisungen
Danke Uwe,
offesichtlich hast Du dies geschrieben. Mein Respekt dafür. Das kann ich nicht. Dein Code könnte die Sache ziemlich erleichtern. Auch wenn das Feature mal nicht verwirklicht worden ist, konnte man dies nicht mittlerweile nachholen? Soweit ich weiß, steht dies seit einigen Delphi Updates in der Hilfe. Vielen Dank noch mal |
AW: Iteration durch Datenmengen mit for-Anweisungen
Damit die Hilfe gefixt wird, solltest du einen QP Report dazu erstellen.
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 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