Forum: Programmieren allgemein
by negaH,
6. Jan 2004
Naja, die Fehler in der Rechtschreibung sollten entfernt werden.
Ach wichtig ist auch noch folgende Information. Der Optimierer hat in keienr Delphi version einen Algortihmus zur Entfernung redundanter Register-Inhalte. Angenommen vor einem Unter-Methoden-Aufruf lädt der EAX aus ESI/EDI oder Stack. Danach ruft er die 1. Untermethode auf die NICHT EAX modifieziert. Nun beim nächsten Aufruf der...
Forum: Programmieren allgemein
by negaH,
6. Jan 2004
Bei der Aufrufkonvention "register" gelten folgende Regeln
1.) register ist die Standardaufrufkonvetion, wenn nicht explizit anderes deklariert wurde
2.) register über gibt die ersten 3 Parameter immer in den Registern EAX,EDX,ECX wenn der Parametertyp ordinal oder per Referenz auf einen Ordinalen Typ ist
3.) Methoden sind standardmäßig register deklariert
4.) Methoden nutzen als ersten...
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
Korrekt. Auch wenn man als Anfänger öfters mal das Hirn dabei verrenken muß, so wird man mit der Zeit ein Gefühl für die korrekten Ausdrücke entwicklen. D.h. man denkt nicht mehr darüber nach warum was wie besser ist. Dazu ist es aber notwendig das man von Anfang an als Anfänger immer über seinen Source nachdenkt und somit auch intensiver lernt. Eine Vereinfachungsmaßnahme die zwar durch...
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
Absolut falsch. Bei meinen Lehrlingen habe ich alle diese Regeln wieder und wieder in den Schädel gehämmert, denn wie soll man es richtig lernen wenn man es nicht richtig lernt ??
Jede Ausnahmeregel und Ausnahmevereinfachung führt dazu das man es so und nicht anders in Zukunft macht.
Einfach mal sagen das der Himmel Grün und die Wiese Blau ist, damit es ein Idiot versteht halte ich für falsch...
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
function IsValidDay(const Value: String): Boolean;
begin
Result := StrToIntDef(Value, 0) in ;
end;
function CalcJulianYear(Year: Word; Month: Word = 1; Day: Word = 1): Word;
begin
// falls CalcJulianYear eine "lowlevel" private Funktion ist
Assert(Month in );
Assert(Day in );
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
@Luckie:
In deinem Tut:
1.) die ShowMessage() sollte durch eine Excpetion ersetzt werden. Der Code als "Highlevel" Funktion sollte auch eine Fehlerüberprüfung haben. "Highlevel" Funktionen können demzufolge auch Exceptions auslösen. Paralell dazu könnte man die Funktion so umbasteln wie es in StrToIntDef() der Fall ist. Dies würde die Exceptions beseitigen und einen Default Wert zuweisen....
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
Nun Klammersetzung. Es sollten niemals zu viele Klammern sein, sondern nur so viele wie nötig
if ((Boolean) and (not (Value = 1))) then Bad;
if Boolean and (Value <> 1) then Good;
if (A = 0) and (B = 0) and (C = 0) then Bad;
if A or B or C = 0 then Good;
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
Eigentlich keine, die Tipps sind einfach Erfahrungswerte :)
Selbst in den Borland NewsGroups existieren darüber falsche Ansichten, auch bei TeamB Mitgliedern.
Gruß Hagen
PS: man kann sich die logischen Abhänigkeiten aus der Delphi Hilfe ableiten, mit ein wenig Geschick :)
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
Bei Prozedure/Funktionen/Methoden die mit Interface/Floatingpoints/Variant/Strings Paramter arbeiten sollte man const Paramter benutzen.
const deklarierte Paramter verhindern das der Compiler das nötige Referenzecounting bei diesen komplexen Typen durchführt.
procedure BadRefCountedTypes(Data: String/Variant/Interface);
begin
// _AddRef(Data); // intern durch Compiler erzeugt
// try...
Forum: Programmieren allgemein
by negaH,
11. Nov 2003
Naja, eines noch: man sollte wissen wie was wann der Compiler compiliert :-)
D.h. man sollte wissen was die einzelnen Aufruf Konventionen für direkte und indirekte Auswirkungen auf das beste Codedesign haben. Zb. arbeiten wir standardmäßig mit Register Aufrufkonvention. Beachtet man im Design das jede Funktion max. 3 Parameter ordinalen Types hat -> Integer/Pointer und Klassen Methoden max. 2...