AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Wert "nicht gesetzt" bei primitiven Datentypen - wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Wert "nicht gesetzt" bei primitiven Datentypen - wie?

Ein Thema von Caps · begonnen am 2. Mai 2018 · letzter Beitrag vom 3. Mai 2018
Antwort Antwort
Seite 2 von 2     12   
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#11

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 09:33
Vielen Dank für die Vorschläge!
Ich werde mal drüber meditieren...

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 09:54
Je nach Anwendungsfall könnte auch eine Universallösung sinnvoll sein:
Dann könnte man noch einwenig Platz sparen durch einen varianten Record
Delphi-Quellcode:
type
  TNullableValue = Record
    IsNull: Boolean;
    case Integer of
      0: (ValueBool: Boolean;);
      1: (ValueInt: Integer;);
      2: (ValueString: String;);
      { usw. }
  end;
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 10:00
Dann könnte man noch einwenig Platz sparen durch einen varianten Record
Vom Handling her sicher eine interessante Idee. Speicher spart man dadurch aber IMHO nicht, es wird wohl immer der größtmögliche Speicherplatz reserviert. Allerdings nur ein mal und nicht mehrere, also eine minimale Ersparnis hätte man.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 11:08
Je nach Anwendungsfall könnte auch eine Universallösung sinnvoll sein:
Delphi-Quellcode:
type
  TNullableValue = record
    IsNull: Boolean;
    ValueBool: Boolean;
    ValueInt: Integer;
    ValueString: string;
    { usw. }
  end;
Das nennt sich Variant, bzw. es ist der kleine Bruder davon (oder Schwester oder Geschlechtsunentschiedener)

@Whookie: Nein, "höhere" Typen dürfen/können nicht in variante Teiles des Records rein.

Delphi-Quellcode:
type
  TNullableValue = Record
    case ValueType: {Integer}TEinEnumMitDenNamenDerTypenUndNullIstAuchEinTyp of
      0: (ValueBool: Boolean);
      1: (ValueInt: Integer);
      2: (ValueString: PChar);
      { usw. }
      666: ({IsNull: Boolean = True});
  end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Mai 2018 um 11:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 12:59
@Whookie: Nein, "höhere" Typen dürfen/können nicht in variante Teiles des Records rein.
Stimmt, da war was. Ich hatte schon die ganze Zeit so ein Gefühl, nur mangels Delphi grad nicht ausprobiert sondern blind geschrieben.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 16:10
Nein, "höhere"gemanagte Typen dürfen/können nicht in variante Teiles des Records rein.
Fixed
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 16:57
Hmmmm, TObject im ARC.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#18

AW: Wert "nicht gesetzt" bei primitiven Datentypen - wie?

  Alt 3. Mai 2018, 18:53
Hmmmm, TObject im ARC.
= managed type

Delphi-Quellcode:
type
  TWhoops = record
    case Boolean of
      True: (X: TObject);
      False: (Y: Pointer);
  end;
Für Linux kompiliert: E2154 Type 'TObject' needs finalization - not allowed in variant record

Ein Code für alle Plattformen am A... (musste nen [unsafe] ran schreiben, dann kompilierts zumindest)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 03:23 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