OK, Danke. Ich hätte eigentlich auch FS genommen, aber ich dachte von der Effizienz her gibt es vielleicht etwas besseres.
Edit: Habe noch ein Problem: Es wird jetzt folgendes gemacht:
C#-Quelltext
1: 2:
| m_iFileSize = GetInt(); m_iFileSize += GetInt() * INT_MAX; |
GetInt() sieht so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| int MyFile::GetInt() { if(!m_fileIn) return 0;
long int ret; fread(&ret, 4, 1, m_fileIn); return (int)ret; } |
das habe ich so übersetzt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function GetInt: Integer; begin if FS = nil then Result := 0; FS.Read(Result, 1); end; |
Den oben genannten Code führe ich also so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var iFileSize: Integer; begin iFileSize := GetInt; iFileSize := iFileSize + GetInt * MAXINT; end; |
Nur kann das irgendwie nicht stimmen, weil irgendwas mit -20253642 raus kommt. Hat INT_MAX in C++ einen anderern Wert als MAXINT in Delphi?
Edit2: Jetz hab ichs:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function GetInt: Integer; var Byte1, Byte2, Byte3, Byte4: Byte; begin if WZ = nil then Result := 0;
Byte1 := GetByte; Byte2 := GetByte; Byte3 := GetByte; Byte4 := GetByte;
Result := (byte4 shl 24) + (byte3 shl 16) + (byte2 shl 8) + byte1; end; |
Moderiert von
Narses: Code- durch C#-Tags ersetzt