Hallo,
ich habe eine Frage zu den (un-)gängigen Variablentypen in Delphi. ich neige meist dazu, Variablentypen so klein wie möglich zu wählen. Wenn ich also von einer Variable weiß, dass sie stets positiv ist und beispielsweise nicht größer als 20 wird, dann deklariere ich sie als
Byte. Wenn eine Variable -1, 0 und 1 sein kann, nehme ich z.B.
ShortInt usw.
Hier mal ein Beispiel wie mein Code desöfteren aussieht. Der Inhalt besitzt keinen tieferen Sinn:
Delphi-Quellcode:
function Add_or_subtract: ShortInt;
begin
// Code unwichtig, liefert z.B. -1 oder +1
end;
procedure Test(max: byte);
var i: integer;
add: ShortInt;
j: byte;
begin
// ..
i := 10;
add := Add_or_subtract;
for j := 1 to max do i := i + add;
// ..
end;
Nun hat sich schon das eine oder andere Mal der Compiler beschwert, dass ich bei mathematischen Operationen oder if-Abfragen Variablen unterschiedlichen Typs verwende, z.B. verschiedener Breite oder
unsigned mit
signed.
Nun frage ich mich, ob das überhaupt noch sinnvoll ist, da der Arbeitsspeicher heutzutage ja mehr als ausreichend ist und wohl niemand einen Unterschied merkt, ob eine Hand voll Variablen als
ShortInt oder als
Integer im Speicher liegen. In meinem obigen Beispiel hätte ich dann z.B. alternativ sämtliche Variablen als
Integer deklariert.
Ich persönlich mag diesen Programmierstil, alles so klein wie möglich zu halten. Es gibt mir oft einen guten Überblick, welchem Zweck die ein oder andere Variable dient. Da mein laufender Prozess nach meinem derzeitigen Verständnis durch Typumwandlungen aber eher verlangsamt wird (?) und ich neulich über einen Artikel gestolpert bin, nach dem sogar schon
Booleans teilweise im 32-Bit Format gespeichert werden, wollte ich mal in die Runde fragen, ob mir zu diesem Thema jemand ein paar Informationen geben kann.
Danke wie immer für Tipps und Links,
Gruß Xoric