Zitat von
himitsu:
erstmal ein Fehler in der Demo von
Beitrag #4:
Code:
Procedure RetrieveString(Const ACharArray: Array Of Char; Out AString: String);
...
For i := Low(ACharArray) To [color=red]Pred([/color]High(ACharArray)[color=red])[/color] Do
Das letzte Zeichen wird nicht kopiert und ist daher undefiniert.
Jo, aber bei einer ungeraden Länge des Arrays wirste einen Fehler bekommen, weil i+1 zu gross ist beim letzten Zeichen. Daher bin ich auf Sicherheit gegangen, da mir bisher noch keine
IDE Geräte untergekommen sind, die die Felder voll ausnutzen.
Zitat von
himitsu:
Und dann sind dynamische Arrays in Delphi immer 0-basierend, also kann man das ganze LOW-Zeugs auch weglassen ^^
Und wenn man die Funktion kopiert und direkt auf die Struktur anwendet klappt es nicht mehr. Wenn man High() verwendet, dann sollte man auch Low() verwenden. Dann klappt es immer - egal ob statische oder dynamische Arrays.
So, im Anhang eine umgeschriebene Version wo die hier angesprochenen Fehler behoben wurden. Auch das mit der DriveMap bei
Win9x/ME und PhysicalDrive bei NT/2000/XP/+ ist auch beachtet. Und nun könnt ihr es wieder zerreissen.
Mit der SPTI/SCSI Version habe ich noch nicht angefangen...