AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Iteration durch Datenmengen mit for-Anweisungen
Thema durchsuchen
Ansicht
Themen-Optionen

Iteration durch Datenmengen mit for-Anweisungen

Ein Thema von Peter-Pascal · begonnen am 12. Nov 2022 · letzter Beitrag vom 13. Nov 2022
Antwort Antwort
Seite 1 von 2  1 2      
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
197 Beiträge
 
Delphi 11 Alexandria
 
#1

Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 14:10
Datenbank: SQlite • Version: 3.0 • Zugriff über: Firedac
Hallo,
bei mir klappt die Iteration durch Datenmengen nicht, obwohl es laut DelpheHilfe funktionieren soll:

Delphi-Quellcode:
[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);
Mein Code sieht so aus:
Delphi-Quellcode:
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;
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.

Vielen Dank für eure Hilfe

Gruß Peter

Ps.: ich weißt nicht, ob das Thema hier überhaupt hingehört
Peter Niemeier
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 14:23
for ds in FDQuery1 do <> for DS in FDQuery1.GetRow() do
  Mit Zitat antworten Zitat
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
197 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 14:43
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:
  FDQuery1.Open('select * from Taxonomie');
  for DS in FDQuery1.GetRow() do
  begin

  end;
Am Anfang der Zeile ein rotes Ausrufezeichen und das do ist gekräuselt unterstrichen
Peter Niemeier
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#4

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 14:45
Das ".getRow" muss weg.
  Mit Zitat antworten Zitat
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
197 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 14:57
danke für die Antwort,
aber wenn ich es so mache:
Delphi-Quellcode:
var
  DS: TDataSet;
begin
  FDQuery1.Open('select * from Taxonomie');
  for DS in FDQuery1 do
  begin

  end;
bekomme ich diese Fehlermeldung:
[dcc64 Fehler] Model.DM.Access.EBilanz.pas(52): E2010 Inkompatible Typen: 'TDataSet' und 'TComponent'
Peter Niemeier
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#6

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 15:17
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.
  Mit Zitat antworten Zitat
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
197 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 15:56
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
Peter Niemeier
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#8

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 16:23
Die Doku ist leider übrig geblieben, nachdem das Feature vor dem Release gecancelt wurde. Eine alternative Implementierung findest du hier: https://github.com/UweRaabe/DataSetEnumerator
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Peter-Pascal

Registriert seit: 18. Feb 2007
Ort: 32139 Spenge
197 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 17:49
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
Peter Niemeier
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.822 Beiträge
 
Delphi 12 Athens
 
#10

AW: Iteration durch Datenmengen mit for-Anweisungen

  Alt 12. Nov 2022, 18:38
Damit die Hilfe gefixt wird, solltest du einen QP Report dazu erstellen.
https://quality.embarcadero.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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