Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
Wenn man aber jetzt davon ausgehen darf, daß alle Codes potentiell fehlerhaft/unsicher sind,
dann kann man auch gleich alles selber neu schreiben und niemals Fremdcodes verwenden.
Und gerade bei unserer Codelib geh ist erstmal davon aus, daß darin geprüfter/sicherer Code enthalten ist, bzw. daß derartiger Code keine bekannten Fehler enthält. :zwinker:
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
In deinen eigenen Programme kannst'e das "gern" machen.
Aber bei öffentlichen Codes für Andere ... was wäre denn, wenn die ESA :zwinker: die neuen Raketensteuerprogramme in Delphi programmiert und dafür deinen Code verwendet?
Und wie gesagt, mit einer kleinen Umstelltung kannst'e hier die beiden Streams auch mit nur einem Try-Finally absichern. :angel2:
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
Ja, genau das.
OutOfMemory (kein Speicher für die Klasse) und andere Exceptions im Konstructor können also nie auftreten?
Die Ausnahmen für die Zusammenfassung der Try-Finally hatte ich grade oben noch mit dazueditiert.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
Schau dir aber dazu bitte meine beiden Codes aus Beitrag #4 an ... speziell die Streams und die zugehörigen Try-Finally.
Ein Resourcen-Schutzblock (Try-Finally) fängt immer direkt nach der Resourcen-Beschaffung an,
um diese Resource auch richtig zu schützen/freizugeben.
{resource reservieren}
try
...
finally
{resource freigeben}
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
Ein Hash wäre (vorallem wenn beide Dateien auf dem selben Datenträger liegen) wohl schneller, aber wie mkinzler sagen wollte "ein Hash ist nicht eindeutig".
Bei einem CRC32 gibt es schon bei Dateigrößen bis 5 Byte je Hash mindestens 256 Dateien mit diesem Hash.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
try
...
except
Result := False
end;
Dieses sollte besser ganz raus, denn bei einem Zugriffsfehler (z.B. fehlende Rechte) würde einfach nur FALSE ausgegeben, aber der Grund bleibt "geheim".
Außerdem könnte es ja dennoch sein, daß beide Dateien identisch sind, welches dann ntürlich ein falsches Ergebnis liefern würde.
die beiden kürzesten Quellcodes (nicht kürzeste Laufzeit) wären...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by himitsu,
14. Mai 2010
Eine byteweise Verarbeitung ist extrem langsam ... ließ ganze Blöcke aus und vergleiche diese z.B. mit CompareMemory deren Inhalt.
Jedesmal Seek aufzurufen ist auch unnötig, da Read den Positionszeiger schon verschiebt.
Read ohne Auswerten des Rückgabewertes zu verarbeiten ist nicht gut, da Lesefehler irgnoriert werden könnten. (verwende besser ReadBuffer oder werte das Result aus)
...