[Erledigt] Objektlisten erstellen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Objektlisten erstellen

Beitrag von MacWomble »

Kann das so stimmen?

Code: Alles auswählen

  { TArtikelgruppenListe }
 
  TArtikelgruppenListe = class(specialize TFPGObjectList<TArtikelgruppe>)
  public
    function Add(Obj: TArtikelgruppe): integer;// override;
    procedure ReadAllData;
    procedure ReadListData(Query: string);
  end;
 
implementation
 
{ TArtikelgruppenListe }
 
function TArtikelgruppenListe.Add(Obj: TArtikelgruppe): integer;
begin
  inherited Add(Obj);
end;
 
procedure TArtikelgruppenListe.ReadAllData;
begin
  ReadListData('Select * from ArtikelGruppen');
end;
 
procedure TArtikelgruppenListe.ReadListData(Query: string);
var
  TempObj: TArtikelGruppe;
begin
  debugln('TArtikelgruppenListe.ReadListData:');
  debugln('  ' + Query);
  with dtmBasis.qrySQL do
  begin
    try
      SQL.Text := Query;
      Open;
      if RecordCount >= 0 then
      begin
        First;
        while not EOF do
        begin
          TempObj := TArtikelgruppe.Create;
 
          TempObj.ID := FieldByName('idartikelgruppe').AsInteger;
          TempObj.IDColor := FieldByName('fk_color').AsInteger;
          TempObj.Artikelgruppe := FieldByName('artikelgruppe').AsString;
 
          // wie adde ich das Objekt hier?
          Self.Add(TempObj);
 
          TempObj.Free;
          Next;
        end;
      end;
      Close;
    except
      On E: Exception do
        debugln(' ' + E.Message)
    end;
  end;
end;         
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objektlisten erstellen

Beitrag von pluto »

// wie adde ich das Objekt hier?
Self.Add(TempObj);

genauso habe ich es verstanden.
Du solltest vielleicht nicht am ende TempObj frei geben, da vielleicht auch das Objekt in der Liste frei geben ist... Da bin ich mir gerade nicht sicher.
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Objektlisten erstellen

Beitrag von MacWomble »

Danke!
Dann bin ich jetzt dank eurer Hilfe wieder einen großen Schritt weiter und habe das nun auch verstanden (hoffentlich :oops: )

Ich muss schon anmerken, dass mir die Klassenbastelei so langsam richtig Spaß macht.
Vor allem habe ich schon gemerkt, dass ich durch Objekte zahlreiche Vereinfachungen erhalte. So ist z.B. das Fortführen eines Angebots zu einem Lieferschein ein Klacks, weil ich nur das Objekt Angebot in Lieferschein ummünzen und dieses dann als neuen Satz speichern muss. Das Objekt Angebot ist dann zwar nicht mehr im Speicher, aber noch immer in der Datenbank. Das ergibt genau drei DB-Zugriffe (Auftragskopf und Positionen und das Schreiben des Status des Angebots). Im Moment sind es wesentlich mehr ... und ähnliche Fälle habe ich zahlreiche. Auch die Eingabeformulare für die Daten sind wesentlich einfacher, aber können mehr. :shock: :D

Für heute mache ich Schluss und gehe morgen wieder ans Werk. Dann wird sich zeigen, ob die Liste funktioniert.

Nochmals einen Dank an Euch und eine Gute Nacht!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objektlisten erstellen

Beitrag von pluto »

Vor allem habe ich schon gemerkt, dass ich durch Objekte zahlreiche Vereinfachungen erhalte. So ist z.B. das Fortführen eines Angebots zu einem Lieferschein ein Klacks, weil ich nur das Objekt Angebot in Lieferschein ummünzen und dieses dann als neuen Satz speichern muss.

Das ist der Sinn von OOP gewesen... Moderen Sprachen haben OOP in zwischen rausgeschmissenen.... es ein gescheitertes Konzept.... Aber darüber können wir in einem anderen Thread sprechen.
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Objektlisten erstellen

Beitrag von MacWomble »

Zunächst mal: Das funktioniert nun so weit wunderbar! - Nochmals Danke :)

Falls jemand das ganze nachvollziehen möchte, hänge ich die Unit uartikelgruppe.pas hier an.

Da diese Fragen nun beantwortet sind, setze ich diesen Thread nun auf erledigt, der nächste kommt bestimmt :twisted:

Ich denke, eine gesunde Mischung zwischen funktionaler und objektorientierter Programmierung ist in den meisten Fällen sinnvoll.
Ich sehe das so, dass meine Daten aus der Datenbank als Objekte absolut Sinn machen. Aber da findet man auch zahlreiche Artikel im Netz, welche dieses Thema behandeln.
Dateianhänge
uartikelgruppe.pas
(4.89 KiB) 82-mal heruntergeladen
Zuletzt geändert von MacWomble am Mo 14. Jan 2019, 09:16, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: [Erledigt] Objektlisten erstellen

Beitrag von MacWomble »

@Pluto
Mir ist eben noch aufgefallen, dass da nco eine kleine Unstimmigkeit in deinem Beispiel steckt:

Code: Alles auswählen

...
Dir_Items:=TObjectList.Create(false);
 
  if MariaDB.Query.RecordCount >= 0 then begin // > 0 ! Wenn gleich 0 muss er ja da nicht rein!
    MariaDB.Query.First;
    while not MariaDB.Query.Eof do begin // not Query.Eof
...
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Objektlisten erstellen

Beitrag von m.fuchs »

pluto hat geschrieben:Das ist der Sinn von OOP gewesen... Moderen Sprachen haben OOP in zwischen rausgeschmissenen.... es ein gescheitertes Konzept.... Aber darüber können wir in einem anderen Thread sprechen.

Steile These, das solltest du dann wirklich mal in einem neuen Thread erläutern.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Objektlisten erstellen

Beitrag von theo »

m.fuchs hat geschrieben:
pluto hat geschrieben:Das ist der Sinn von OOP gewesen... Moderen Sprachen haben OOP in zwischen rausgeschmissenen.... es ein gescheitertes Konzept.... Aber darüber können wir in einem anderen Thread sprechen.

Steile These, das solltest du dann wirklich mal in einem neuen Thread erläutern.

Ja, da würde ich auch gerne mehr darüber wissen.
@Pluto: Ich hoffe deine Informationen sind in diesem Bereich etwas zuverlässiger, als bei deiner kernigen Behauptung neulich: "FFMEG gilt als veraltet"

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: [Erledigt] Objektlisten erstellen

Beitrag von pluto »

@Pluto: Ich hoffe deine Informationen sind in diesem Bereich etwas zuverlässiger, als bei deiner kernigen Behauptung neulich: "FFMEG gilt als veraltet"

Heißt es.... der Nachfolger ist nun mal avconv
Zum Beispiel steht es hier im heise Artikel drin:
https://www.heise.de/newsticker/meldung ... 08078.html
Im Wikipedia steht es auch drin:
https://de.wikipedia.org/wiki/FFmpeg

Vielleicht ist ffMpeg nicht veraltet, aber es sollte nicht mehr verwendet werden.
Ob FFMPEG überhaupt noch Aktiv weiter Entwickelt wird weiß ich nicht.... Das ist auch sowas wieder wie mySQl und MariaDB...

Wegen dem OOP Konzept was als gescheitert gilt, werde ich mal im Internet suchen, ob ich da was finde.... Einer im Verein hat das gesagt, jemand dem ich das auch glaube.... ich glaube nicht alles was ich höhere oder lese....
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: [Erledigt] Objektlisten erstellen

Beitrag von MacWomble »

ffmpeg ist nicht veraltet, sondern nennt sich jetzt libAV :twisted:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: [Erledigt] Objektlisten erstellen

Beitrag von pluto »

ffmpeg ist nicht veraltet, sondern nennt sich jetzt libAV

Problem ist halt, es gibt beides... es gibt immer noch ffmpeg, ich weiß nicht welche Version und es gibt libAV... im Internet ist libAV kaum verbreitet....
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: [Erledigt] Objektlisten erstellen

Beitrag von theo »

Hier steht doch alles: https://de.wikipedia.org/wiki/FFmpeg#Libav

Warum muss man immer solchen Käse in die Welt setzen? Es hat ja noch nicht mal jemand danach gefragt.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: [Erledigt] Objektlisten erstellen

Beitrag von pluto »

Warum muss man immer solchen Käse in die Welt setzen? Es hat ja noch nicht mal jemand danach gefragt.

Gefragt wurde schon hier:
@Pluto: Ich hoffe deine Informationen sind in diesem Bereich etwas zuverlässiger, als bei deiner kernigen Behauptung neulich: "FFMEG gilt als veraltet"

Damit bestätigt sich ja meine Aussage:
Die beiden Linux-Distributionen Debian und Ubuntu lieferten von da an standardmäßig Libav aus. Gleichzeitig wurde die Ausgabe des Programms ffmpeg unter Debian und Ubuntu mit dem Hinweis ergänzt, dass FFmpeg nicht mehr weiterentwickelt wird.

Zitat von Wikipedia

Ich finde, viele Leute wissen das scheinbar gar nicht, auch wenn wir jetzt zwei Thread vermischen...
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: [Erledigt] Objektlisten erstellen

Beitrag von theo »

Und den Rest hast du auch gelesen?
Nachdem Anwender sich beschwert hatten, dass das nicht der Wahrheit entspricht, weil FFmpeg nach wie vor weiterentwickelt wird, wurde nun behauptet, ffmpeg sei überholt (deprecated) und es solle stattdessen avconv verwendet werden.[7] Debian nahm daraufhin das FFmpeg-Paket wieder in seinen Quellen auf und bietet somit beide Bibliotheken an.[8]

Im Juli 2015 gab das Debian-Projekt bekannt, wieder zur ursprünglichen FFmpeg-Version zurück zu wechseln.[9] Als Gründe wurden vor allem die höhere Sicherheit, ein deutlich kürzerer Wartungszyklus sowie die deutlich höhere Anzahl an Code-Beiträgen (englisch „code contributions“) und Verantwortlichen (englisch „maintainer“) angegeben.[10] Ubuntu folgte entsprechend, nahm mit Version 15.04 "Vivid" ffmpeg wieder in die Quellen auf und entfernte mit Version 15.10 "Wily" die Pakete des Libav-Projekts aus den Quellen.

Kurz nach der Ankündigung des Debian-Projektes, wieder zu FFmpeg zu wechseln, trat Michael Niedermayer als Leiter von FFmpeg zurück und begründete dies unter anderem mit der Hoffnung, damit ein erneutes Zusammenwachsen der beiden Projekte zu ermöglichen.[11]


Und nein, niemand hat das gefragt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: [Erledigt] Objektlisten erstellen

Beitrag von af0815 »

Wenn das mit den Objektlisten und Datenbanken weitergesponnen wird, so ist man irgendwann mal bei tiOPF oder mormot :-) Vor allen wenn man nach einer allgemeineren unabhängigen Lösung sucht. :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten