AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Integer erkennen der nicht initalisiert wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Integer erkennen der nicht initalisiert wurde

Ein Thema von Andreas L. · begonnen am 23. Mai 2007 · letzter Beitrag vom 25. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
Andreas L.
(Gast)

n/a Beiträge
 
#1

Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 22:53
Hi,
ich habe folgenden Record

Delphi-Quellcode:
type
 TTrack = record
   Location: String; //filename (also relative) or url, see TOptions
   Identifier: String; //file hash, etc...
   Title: String;
   Creator: String; //artist
   Annotation: String; //comment
   Info: String; //homepage for more informations
   Image: String; //e. g. a cover. URL or filename required
   Album: String;
   TrackNum: Integer; //track number/position in the playlist or on the cd
   Duration: Integer; //length in miliseconds
   Link: String; //link to some rdf code... see specs.
 end;
Bei einer meiner Funktionen muss später so ein record übergeben werden. Dabei müssen jedoch nicht alle Felder ausgefüllt werden. Damit ich später nicht irgendwelchen Datenmüll abspeichere überprüfe ich natürlich in meiner Funktion ob das jeweilige Feld einen Wert enthält. Jetzt gibts da aber ein Problem mit den Integern. Werden die nicht gesetzt haben die irgendeinen Wert. Wie kann ich jetzt herausfinden ob der User einen Wert übergeben hat oder ob das nur die Zufallszahl ist?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 22:54
das kannst du nicht feststellen (würde mich zumindest wundern).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 22:56
Kann man in records denn nicht auch irgendwie Standard-Werte festlegen. Ala bla: Integer = 0; ??
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 22:57
Nein. Du kannst sie nur initialisieren. Du kannst nicht definitiv sagen, ob eine Variable initialisiert wurde oder nicht.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#5

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 22:58
so wie ich das sehe, erwartest du dafür immer nur positve werte, definier doch eine negative konstante
Delphi-Quellcode:
const
  UnDef = -1
auf die du überprüfst.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 22:59
Du kannst sie nur initialisieren und wie geht das in Verbindung mit meinen record?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 23:03
Zitat:
und wie geht das in Verbindung mit meinen record?
Du mußt die Einzelnen Teilwerte mit Standards belegen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 23:03
Kommt drauf an, mit was du das machen willst. Du kannst einen Boolean auf False setzen, einen Integer auf -1 oder einfach mit ZeroMemory den ganzen Record mit 0en überschreiben.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#9

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 23:08
Was ich da bau ist eine Komponente. D. h. ich kann nicht herausfinden wann der User den record benutzt. oder doch?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Integer erkennen der nicht initalisiert wurde

  Alt 23. Mai 2007, 23:12
Wenn Du für deine Werte definitiv wissen willst, ob sie mit einem Wert belegt wurden, oder nicht, dann kannst du Variants nehmen. Allen Unkenrufen zum Trotz sind die gar nicht so langsam, wie viele Puristen einem glaubhaft machen wollen (zumindest in Zeiten der GHz Prozessoeren nicht mehr).

Ein Variant ist ein polymorpher Datentyp, der also beliebige Werte (Strings, Arrays, Integer, Float 'you name it') annehmen kann. Daneben gibt es noch die wohldefinierten Werte 'Null' (also nix) sowie 'Unassigned'.

Allerdings belegen Variants mehr Speicherplatz, als generische Datentypen. Wenn die genaue Größe deines Records also irrelevant ist, kann man Variants verwenden.

Eine weitere Möglichkeit ist die Verwendung einer Klasse, wobei Du für jede Property 'X' noch eine weitere' Is_X_defined' deklarierst.

Sobald erstmals schreibend auf die Eigenschaft 'X' zugegriffen wird, liefert 'Is_X_defined' true, sonst eben false.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:42 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