AGB  ·  Datenschutz  ·  Impressum  







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

Record-Variable in Klasseninstanz setzen

Ein Thema von Perlsau · begonnen am 9. Dez 2012 · letzter Beitrag vom 10. Dez 2012
 
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Record-Variable in Klasseninstanz setzen

  Alt 10. Dez 2012, 02:09
Mann ist das ein Kuddelmuddel in dem Sourcecode!
Ich versuche mal Ordnung zu schaffen.
Wir beginnen mit dem Record:
Delphi-Quellcode:
TTab_User = RECORD
  Titel_Index : Integer;
  Titel_SortIndex : Integer;
  Titel_SortOrder : Boolean;
  Titel_SortText : String;
END;
und stellen die wichtigste Frage:
Könnte es nicht sein, dass TTab_User nicht eine Klasse statt einen Records sein sollte?
Eine Klasse ist im Prinzip ein Record + Methoden.

Antwort: Ja, es gibt potentielle Methoden für die Klasse TTab_User:
Delphi-Quellcode:
// Filmtitel - Initialisierung von User_Tab
DatMod.User_Tab.Titel_Index := DatMod.Aset_UserTabs.FieldByName('Titel_Index').AsInteger;
DatMod.User_Tab.Titel_SortIndex := DatMod.Aset_UserTabs.FieldByName('Titel_SortIndex').AsInteger;
DatMod.User_Tab.Titel_SortOrder := NOT DatMod.Aset_UserTabs.FieldByName('Titel_SortOrder').AsBoolean;
DatMod.User_Tab.Titel_SortText := DatMod.Aset_UserTabs.FieldByName('Titel_SortText').AsString;
Und damit sieht die Klasse im 1. Entwurf so aus:
Delphi-Quellcode:
TTab_User = class(TObject)
public
  TitelIndex : Integer;
  SortIndex : Integer;
  SortOrder : Boolean;
  SortText : String;

  procedure LoadFromDataset(ds:TDataset);
  procedure SaveToDataset(ds:TDataset);
  procedure Clear;
END;

procedure TTab_User.LoadFromDataset(ds:TDataset);
begin
  TitelIndex:= ds.FieldByName('Titel_Index').AsInteger;
  SortIndex := ds.FieldByName('Titel_SortIndex').AsInteger;
  SortOrder := NOT ds.FieldByName('Titel_SortOrder').AsBoolean;
  SortText := ds.FieldByName('Titel_SortText').AsString;
end;
Der Anfang ist gemacht.
Die weiteren Schritte sehen so aus:
* aus den public Variablen werden Properties gemacht
* weitere Methoden (z.B. procedure Clear oder SaveToDataset)entdecken und zur Klasse hinzufügen
* überprüfen ob die Klasse vollständig ist (gibt es noch weitere Felder aus der Tabelle "User_Tab"?)
* den Sourcecode der Klasse in eine eigene Unit verschieben
* Ein Objekt der neuen Klasse TTab_User in die Klasse TMain_Zugriff einbauen
* überlegen ob ein Objekt von TTab_User ausreicht oder ob man nicht eine Liste von diesen Objekten braucht
* müssen TTab_User-Objekte kopiert werden können? Fall ja, von TPersistent ableiten und die Methode Assign überschreiben

Geändert von sx2008 (10. Dez 2012 um 02:13 Uhr)
  Mit Zitat antworten Zitat
 


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:34 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