![]() |
boolean ohne variable?
hi,
Delphi-Quellcode:
ich habe 2 fragen hierzu, ersteinmal: wieso hat das "case" hier kein "end;" ? und zweitens wie funktioniert der boolean in dem case, er hat ja gar keine variable? O_o
procedure TForm1.Button1Click(Sender: TObject);
var fs : TFileStream; DataSize : Word; DataType : Word; CurEntry : record Header : record Tag : array[0..3] Of Char; EntryType : Word; Size : Word; end; case boolean of true: (Value : DWORD; Junk: array[0..1023] of Char); false : (Str : array[0..1023] of Char); end; CurInfo : String; CurJunk : array[0..1023] Of Char; begin //... end; |
Re: boolean ohne variable?
hi,
zwei gegenfargen: woher hast du das? und kompiliert es? Aenogym |
Re: boolean ohne variable?
ja, es kompiliert....
aber wundern tuts mich auch :gruebel: |
Re: boolean ohne variable?
es ist ein stück code den ich von SCP habe, ich versuche gerade den nach und nach nachzuvollziehn und scheitere bereits wie man sieht an den records ^^
ja es lässt sich kompilieren, wenn ich ein "end;" ans case ranfügen würde, würde es nichtmehr gehen. ich kann zwar ein b: vor dem "boolean" machen, aber das war nur als test, es lässt sich mit und ohne kompilieren, nur versteh ich nicht wie dieser bool dann funktioniert? |
Re: boolean ohne variable?
so,
delphi-hilfe bemüht: Zitat:
Aenogym edit: das nächste mal verwende ich die vorschau :roll: |
Re: boolean ohne variable?
Delphi-Quellcode:
damit kannst du in einem record mehrere variablen im selben speicher halten -> das ganze dient der übersicht wenn du ein record für 2 sachen verwenden willst und dadurch 2 ( hier 2 durch das boolean -> true/false ) verschieden bezeichnungen brauchst.
procedure TForm1.Button1Click(Sender: TObject);
var fs : TFileStream; DataSize : Word; DataType : Word; CurEntry : record Header : record Tag : array[0..3] Of Char; EntryType : Word; Size : Word; end; case boolean of true: (Value : DWORD; Junk: array[0..1023] of Char); false : (Str : array[0..1023] of Char); end; CurInfo : String; CurJunk : array[0..1023] Of Char; begin //... end; beispiel:
Delphi-Quellcode:
hier habe ich für jeden variablentyen einen eigenen namen mit verschiedenen typen (Boolean/Integer..). da das record je immer nur eine variabe annehmen kann muss ich ja nicht alle möglichkeiten im record gleichzeitig aufnehmen sondern nehme per case nur jeweils eins rein was mich an speicher nur soviel kostet wie der größte typ ( der compiler denkt da halt mit... und mir erspart es arbeit bzw arbeitsspeicher )
TIPSVarType = (vtBoolean, vtInteger, vtFloat, vtString);
TIPSVarTypes = set of TIPSVarType; PIPSVariable = ^TIPSVariable; TIPSVariable = record VarName : PChar; VarType : TIPSVarType; VarInfo : PChar; VarUpdated : TDateTime; case TIPSVarType of vtBoolean : (VarBoolean : Boolean); vtInteger : (VarInteger : Integer); vtFloat : (VarFloat : Single); vtString : (VarString : PChar); end; werd mal bei gelegenheit das topic aus der delphi help suchen.... da gabs was... |
Re: boolean ohne variable?
[ot]
"Junk" ist ein schöner Bezeichner :D. Das heisst so viel wie Müll/Schrott. "Chunk" ist mir in Verbindung mit binären Dateiformaten eher ein Begriff ;) (heisst ~Stück, im Sinne z.B. von "a chunk of meat") [/ot] Jö, wollt ich nur am Rande los werden :angel2: btw: DAS nenne ich mal nen Record! Record in Record, und dann noch mit variantem Teil und (verkappten) Strings. Is ja alles drin so :lol: |
Re: boolean ohne variable?
@Aenogym:
wenn ich keinen bezeichner habe für den boolean, wie spreche ich ihn dann an? @paresy: ich weiss schon wie variante records funktionieren, mir ist nur schleierhaft wieso da nach dem case kein "end;" kommt |
Re: boolean ohne variable?
Zitat:
|
Re: boolean ohne variable?
Ich darf?
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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