AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ObjectList.Assign klappt nicht immer.

Ein Thema von Captnemo · begonnen am 23. Nov 2012 · letzter Beitrag vom 23. Nov 2012
Antwort Antwort
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 07:38
Hi,

ich habe eine etwas merkwürdiges Problem. Ich versuche das mal zu beschreiben.

Ich habe eine ObjectList (Gruppen: TGruppenList) mit Objecten, die ihrerseits wiederum eine ObjectList (Mitarbeiter: TMitarbeiterlist) beinhalten.

Nun will ich folgendes machen:
Die Daten eines Objects von Guppen samt Mitarbeiter an ein Unterformular weitergeben, dort ggf. bearbeiten und dann ggf. wieder zurückspeichern.
Die Variablen der vom Gruppenelement übergebe ich in Editfelder und die Objectlist Mitarbeiter übergebe ich in eine eigene ObjectList des Bearbeitungsformulars.

Ist die MitarbeiterList zu beginn leer funktioniert es auch so, wie erwartet. Sind dort aber schon Objecte vorhanden, so werden diese zwar an Bearbeitungsformular übergeben, aber kommen leer wieder zurück. Ist ein bischen blöd zu bescheiben, deswegen mal ein bischen Source.

Der Aufruf der Berabeitungsform:
Delphi-Quellcode:
  frm_gruppebearbeiten.guid:=frm_main.gruppen[0].guid;
  frm_gruppebearbeiten.edt_name.Text:=frm_main.gruppen[0].name;
  frm_gruppebearbeiten.edt_grnr.Text:=frm_main.gruppen[o].grnr;
  frm_gruppebearbeiten.mmo_beschreibung.Lines.Text:=frm_main.gruppen[0].Beschreibung;
  frm_gruppebearbeiten.mitglieder.Assign(frm_main.gruppen[0].Mitglieder); //<-- Das Funktioniert, ich kann auf die Daten in Unterform zugreifen
  if frm_gruppebearbeiten.ShowModal=mrOk then
  begin
    frm_main.gruppen[0].name:=frm_gruppebearbeiten.edt_name.Text;
    frm_main.gruppen[0].Beschreibung:=frm_gruppebearbeiten.mmo_beschreibung.Lines.Text;
    frm_main.gruppen[0].Mitglieder.Clear; //<-- Hab ich mal hinzugefügt, bringt aber keine Änderung
    frm_main.gruppen[0].Mitglieder.Assign(frm_gruppebearbeiten.mitglieder); //<-- Hier werden die Daten wohl nicht richtig zurückgegeben.
                                                                                             // Es sind zwar alle Elemente vorhanden, aber sie sind leer.
    frm_main.gruppen[0].SaveToDB;
    LeseGruppen(True);
  end;
Die Units, in denen die ObjectListen erstellt werden, lege ich mal als Anhang bei.

Ich habe bestimmt irgendwo einen Fehler gemacht, aber ich finde den einfach nicht. Soweit ich weiß erstellt Assign ja eine Kopie der Object. Demnach müßte es ja eigentlich funktionieren.
Angehängte Dateien
Dateityp: pas ugruppen.pas (11,3 KB, 5x aufgerufen)
Dateityp: pas umitarbeiter.pas (11,8 KB, 5x aufgerufen)
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 07:48
Wäre ja gut wenn TMitarbeiter eine Assign-Methode hätte.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 07:53
Wieso?
Reicht nicht das Assign, was TObjectList für TMitarbeiterList bereitstellt?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 07:56
Damit wird ja nur die Liste der Pointer kopiert. Für die einzelnen Objekte musst Du dann ein eigenes Assign erstellen und ggf. aufrufen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#5

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 08:09
Ich hatte das aus der Hilfe:

Zitat:
Kopiert Elemente aus einer Liste in eine andere.

Mit Assign übernehmen Sie die Elemente einer Liste in eine andere. Assign kombiniert die Quell- und die Zielliste mit dem im Parameter AOperator angegebenen logischen Operator.

Wenn der Parameter ListB angegeben (Delphi) bzw. nicht NULL (C++) ist, ersetzt Assign zunächst alle Elemente in dieser Liste mit den Elementen aus der Liste ListA und kombiniert anschließend ListB und ListA anhand des im Parameter AOperator angegebenen Operators.
Daraus hatte ich jetzt entnommen, dass alle "Elemente" kopiert werden. Ob jetzt als "Element" der hinterlegt Pointer gemeint ist, oder das tatsächliche Object, kann ich dieeser Hilfe nicht zweifelsfrei ermitteln. Wäre aber für mich sinnig.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 08:45
In der Liste stehen aber nur die Pointer auf die darüber referenzierten Instanzen, NICHT die Instanzen selbst. Daher ist die Aussage in der Hilfe schon richtig: Da nur die Pointer in der Liste sind, werden auch nur diese kopiert. Willst du die Instanzen duplizieren, musst du das selbst tun.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 11:29
@Captnemo

Assign ist nicht Assign, das ist evtl. das Problem. Was ein Assign der jeweiligen Klasse kopiert, das hängt von der Klasse ab. An besten immer in den Quellcode gucken.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 12:03
In dem Fall wären Deine Mitarbeiter besser bei TPersistent aufgehoben. Dann machst Du die Zuweisungen genau wie in Deiner DB-Speicherroutine.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:28 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