AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi [Records] Codeoptimierung bei Übergabetypen
Thema durchsuchen
Ansicht
Themen-Optionen

[Records] Codeoptimierung bei Übergabetypen

Ein Thema von Igotcha · begonnen am 21. Sep 2004 · letzter Beitrag vom 23. Sep 2004
 
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

[Records] Codeoptimierung bei Übergabetypen

  Alt 21. Sep 2004, 15:33
Hallo zusammen,

nachdem ich in meiner Anwendung so gut wie alle Basisfunktionalitäten implementiert habe, möchte ich mich an die Codeoptimierung machen. Speziell stelle ich mir hier Fragen zum Thema Records, da diese zur Laufzeit in Verbindung mit vier VirtualTreeviews zur Datenhaltung benutzt werden.

Ich stelle in 3 der 4 VTVs verschiedene Daten mit der gleichen Record-Struktur dar:

Delphi-Quellcode:
type
  PPrognoseData = ^TPrognoseData;
  TPrognoseData = record
    FGid: integer;
    FPid: integer;
    FGroupid: integer;
    FGBez: String;
    FGTyp: integer;
    FGColor: String;
    FGS1: String;
    FGOP1: String;
    FGS2: String;
    FGOP2: String;
    FGS3: String;
    FMonat: Array [0..16] of double;
end;

type
  PIstData = ^TIstData;
  TIstData = record
    FGid: integer;
    FPid: integer;
    FGroupid: integer;
    FGBez: String;
    FGTyp: integer;
    FGColor: String;
    FGS1: String;
    FGOP1: String;
    FGS2: String;
    FGOP2: String;
    FGS3: String;
    FMonat: Array [0..16] of double;
end;

type
  PPlanData = ^TPlanData;
  TPlanData = record
    FGid: integer;
    FPid: integer;
    FGroupid: integer;
    FGBez: String;
    FGTyp: integer;
    FGColor: String;
    FGS1: String;
    FGOP1: String;
    FGS2: String;
    FGOP2: String;
    FGS3: String;
    FMonat: Array [0..16] of double;
end;
Das "Optimierungsproblem" besteht jetzt darin, dass, wenn ich auf die Daten innerhalb der einzelnen VTVs zugreifen möchte (lesen, editieren), die Daten so zugewiesen werden müssen (hier für die IstDaten):

Delphi-Quellcode:
procedure ...
var
  myData : pIstData;
  mydouble: double;
begin
   myData:=TIST.GetNodeData(Node); // Die Funktion GetNodeData gibt einen Verweis auf den Recordeintrag zurück, der für den Node "Node" hinterlegt ist. An dieser Stelle existiert also eine Verknüpfung vom VTV zu den IstDaten
   myData.FGBez:='etc.'; oder
   mydouble:=myData.FMonat[0];
TIST ist der VTV, der die IstDaten "verwaltet", den ich per Parameter übergeben kann.

Dies hat im Moment zur Folge, dass ich für alle Routinen, die etwas mit den drei VTVs anstellen, eine eigene Version habe - nämlich abhängig vom Record-Typ

Da die Record-Struktur in allen drei Fällen gleich ist, suche ich nun nach einer Optimierungsmöglicheit in der Form, dass ich beim Aufruf der Routinen "irgendwie" den Record-Typ mit übergeben und dann innerhalb der Routine damit arbeiten kann.

Also etwas in der Art wie:

Delphi-Quellcode:
procedure DoSomething(atree: TVirtualStringTree; arecord: ???);
begin
    arecord:=atree.GetNodeData(Node);
    arecord.FGBez:='Test';
    ...
end;

So dass ich dann die Procedure so aufrufen könnte:

DoSomething(TIST, pIstData);
Gruß Igotcha
  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 00:25 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