AGB  ·  Datenschutz  ·  Impressum  







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

record fillchar Speicherleck

Ein Thema von baumina · begonnen am 17. Apr 2014 · letzter Beitrag vom 19. Apr 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von sx2008
sx2008

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

AW: record fillchar Speicherleck

  Alt 19. Apr 2014, 07:23
Ich hatte mich für einen globalen Record entschieden, da dieser alle wichtigen Daten meines aktuell gewählten Mantanten enthält
Hat denn dein Mandant keine Methoden wie z.B. Load(), Save()?
Oder vielleicht brauchst du irgendwann eine Methode die Länderkennzeichen, Postleitzahl und Ort in einem String liefert.
Warum also mit einem Record beginnen wenn doch eine Klasse einen Mehrwert bietet?

Und du kannst mir glauben - irgendwann kommst du an den Punkt an dem du merkst dass du mehrere Mandanten-Objekte brauchst.
Dann wirst du ärgern dass du an tausend Stellen auf einen globalen Record zugreifst.
fork me on Github
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#12

AW: record fillchar Speicherleck

  Alt 19. Apr 2014, 08:28
[rethorische Frage]Wozu überhaupt noch Records?[/rethorische Frage]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.036 Beiträge
 
Delphi 12 Athens
 
#13

AW: record fillchar Speicherleck

  Alt 19. Apr 2014, 10:44
Records kann man in einem Zug in und aus einem Stream kopieren. (allerdings dürfen dann keine Pointer-Typen enthalten sein)

Records haben eine automatische Speicherverwaltung

Man zieht nicht einen ganz so großen Schwanz an Vererbungs unr RTTI-Zeugs mit.

Und man kann sowas wie die Operatoren nutzen, welches ohne eine automatische Speicherverwalung nunmal nicht geht. (nja, bei Interfaces und bei Objekten mit ARC ginge es dennoch, wenn/falls es implementiert ist und wenn die endlich mal den seit Jahren von mir gewünschen Copy-Operator implementieren)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: record fillchar Speicherleck

  Alt 19. Apr 2014, 11:04
Generell ist das Verwenden von globalen Variablen zu vermeiden, vor allem, weil es eine einfache Möglichkeit gibt, diese zu schützen.
Delphi-Quellcode:
interface

function GlobValue : MyRecord;
procedure SetGlobValue( const Value : MyRecord );

implementation

var
  _GlobValue;

function GlobValue : MyRecord;
begin
  Result := _GlobValue;
end;

procedure SetGlobValue( const Value : MyRecord );
begin
  // prüfen, ob die Änderung erlaubt ist
  _GlobValue := Value;
  // Benachrichtigung über die Änderung
end;
Sinnvoll ist es auch den Record immutable (unveränderlich) zu gestalten und die Erzeugung des Wertes über einen Konstruktor zu regeln:
Delphi-Quellcode:
MyRecord = record
private
  FS1 : string;
  FS2 : string;
public
  constructor Create( const S1, S2 : string );
  property S1 : string read FS1;
  property S2 : string read FS2;
end;

constructor MyRecord.Create( const S1, S2 : string );
begin
  // Validierung
  FS1 := S1;
  FS2 := S2;
end;
Im Konstruktor kann jetzt auf Plausibilität geprüft werden und bei unsinnigen Werten wirft man eine Exception.

Mit diesen einfachen Mitteln wird es unmöglich gemacht, dass unbemerkt Änderungen gemacht werden oder inkonsistente Daten vorliegen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: record fillchar Speicherleck

  Alt 19. Apr 2014, 13:42
[rethorische Frage]Wozu überhaupt noch Records?[/rethorische Frage]
Records eignen sich gut als Result von functions. Man kann auch einfach A := B schreiben (egal wie tief der Record verschachtelt ist) falls der Record nur aus Wertetypen und stat. Array besteht. Listen von Records sind allerdings fehleranfällig, z.B. verschwindet Items[Index].Clear im Nirwana (falls Items eine property ist).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:57 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