Mathias hat geschrieben:Hast du mein Post wegen der Array auch gesehen ?
Verdammt, heißt es jetzt der, die oder das Array?
Oder gibts da nix allgemeingültiges?
MFG
Komoluna
Mathias hat geschrieben:Hast du mein Post wegen der Array auch gesehen ?
photor hat geschrieben:Ich habe sie angehängt (bin aber nicht sicher, ob das klappt).
Mathias hat geschrieben:Hast du mein Post wegen der Array auch gesehen ?
Ist bei i_getriebe[1] der erste Fehler ?
Code: Alles auswählen
feld1 : array[1..N] of double;
feld2 : array[0..N-1] of double;
Da wollte ich erstmal fragen, ob es speicher-technisch einen Unterschied zwischen feld1 und feld2 gibt.
Aber es ist richtig, der erste Wert im Feld i_getriebe ist schon falsch.
Code: Alles auswählen
Memo1.Lines.Add(IntToStr(RoadLoadData.z_ritzel));
Memo1.Lines.Add(IntToStr(RoadLoadData.z_blatt));
Memo1.Lines.Add(IntToStr(RoadLoadData.n_gaenge));
Memo1.Lines.Add('');
Memo1.Lines.Add(FloatToStr(RoadLoadData.i_getriebe[1]));
Memo1.Lines.Add(FloatToStr(RoadLoadData.i_getriebe[2]));
Memo1.Lines.Add(FloatToStr(RoadLoadData.i_getriebe[3]));
Memo1.Lines.Add(FloatToStr(RoadLoadData.i_getriebe[4]));
Code: Alles auswählen
16
42
5
-1.02951149491566E-86
3.94265077575268E234
6.77050456775434E-220
52881799.9915781
PS: Was hast du da für ein Hex-Editor, welcher die Bezeichnungen des Records reinschreibt ?
Die -1.02951149491566E-86 steht am Offset 224, meine Zahl igetr[1] beginnt aber schon bei Offset 220,
Code: Alles auswählen
n_gaenge: int32; { Anzahl Gaenge [-] }
ba: array[0..3] of byte;
i_getriebe: array[1..MAXGANG] of double;
Code: Alles auswählen
n_gaenge: int32; { Anzahl Gaenge [-] }
ba: array[0..4] of byte; // Ein Byte mehr.
i_getriebe: array[1..MAXGANG] of double;
Code: Alles auswählen
16
42
5
3.94265077575268E234
6.77050456775434E-220
52881799.9915781
5.29750861208061E-315
wp_xyz hat geschrieben:Damit bekomme ich mit meinem Hex-Editor ab "gaenge" vernünftige Werte, bis zu Offset 316, aber kann daran liegen, weil ich MAXGANG nicht kenne, genausowenig wie MAXPNT.
Code: Alles auswählen
const
{ Daten-Version }
VERS = '0.0.1';
KENN = 'RL02';
{ Kennlinien }
MAXGANG = 7; { maximale Anzahl der Gaenge (dimension. Arrays) }
MAXPNT = 60; { maximale Anzahl Stützstelle für Kennlinien }
Code: Alles auswählen
FileSize: 1864
SizeOf: 1872
Code: Alles auswählen
AssignFile(fRoadLoadData, 'sr500.rlx');
Reset(fRoadLoadData);
Read(fRoadLoadData, RoadLoadData);
Code: Alles auswählen
#b type name content
---------------------------------------------------------------------------
6 char Version RL02
128 char Name SR 500 (Bj. 83)
1 double Gewicht 170 (float 64 bit)
1 double Sx 0.65 (float 64 bit)
1 double Sy 0.8 (float 64 bit)
1 double Radstand 1.4 (float 64 bit)
1 double Fläche 0.97 (float 64 bit)
1 double Cw 0.66 (float 64 bit)
1 double Umfang Rad 2.024 (float 64 bit)
1 double mu 0.8 (float 64 bit)
1 double i_primär 2.557 (float 64 bit)
1 integer Z-Ritzel 16 (signed 32 bit)
1 integer Z-Blatt 42 (signed 32 bit)
1 integer Gänge 5 (signed 32 bit)
7 double i_getriebe (7x) 2.357 (float 64 bit)
1.555 (float 64 bit)
1.19 (float 64 bit)
0.961 (float 64 bit)
0.778 (float 64 bit)
0.0 (float 64 bit)
0.0 (float 64 bit)
7 double i_gesamt (7x) 15.820.. (float 64 bit)
10.437.. (float 64 bit)
7.987.. (float 64 bit)
6.450.. (float 64 bit)
5.222.. (float 64 bit)
(undef) (float 64 bit)
(undef) (float 64 bit)
1 double n_Kupplung 1700 (float 64 bit)
1 double n_Schalt 6800 (float 64 bit)
1 integer Anzahl Punkte 51 (signed 32 bit)
60 double Drehzahl (60x) -- 60x float 64 bit --
1 double max. Drehzahl 7000.0 (float 64 bit)
60 double Leistung (60x) -- 60x float 64 bit --
1 double max. Leistung 23.958.. (float 64 bit)
1 double Drehzahl max. P 6500.0 (float 64 bit)
60 double Drehmoment (60x) -- 60x float 64 bit --
1 double Max. Drehmoment 39.3 (float 64 bit)
1 double Drehzahl max. M 5500.0 (float 64 bit)
1 double Steigung 0.0 (float 64 bit)
1 double Windgeschwindigkeit 0.0 (float 64 bit)
1 double Gewicht Fahrer 100.0 (float 64 bit)
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
FileStream: TFileStream;
dummy: array[0..7] of byte;
i: Integer;
begin
FileStream := TFileStream.Create('sr500.rlx', fmOpenRead);
Memo1.Clear;
FileStream.Read(RoadLoadData.Vers,6);
FileStream.Read(dummy, 2);
FileStream.Read(RoadLoadData.Name, 128);
FileStream.Read(RoadLoadData.Gewicht, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.Gewicht));
FileStream.Read(RoadLoadData.sx, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.sx));
FileStream.Read(RoadLoadData.sy, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.sy));
FileStream.Read(RoadLoadData.Radstand, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.Radstand));
FileStream.Read(RoadLoadData.Flaeche, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.Flaeche));
FileStream.Read(RoadLoadData.cw, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.cw));
FileStream.Read(RoadLoadData.Umfang, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.Umfang));
FileStream.Read(RoadLoadData.mu, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.mu));
FileStream.Read(RoadLoadData.i_prim, 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.i_prim));
Memo1.Lines.Add('');
FileStream.Read(RoadLoadData.z_ritzel, 4);
Memo1.Lines.Add(IntToStr(RoadLoadData.z_ritzel));
FileStream.Read(RoadLoadData.z_blatt, 4);
Memo1.Lines.Add(IntToStr(RoadLoadData.z_blatt));
FileStream.Read(RoadLoadData.n_gaenge, 4);
Memo1.Lines.Add(IntToStr(RoadLoadData.n_gaenge));
Memo1.Lines.Add('');
for i := 1 to MAXGANG do begin
FileStream.Read(RoadLoadData.i_getriebe[i], 8);
Memo1.Lines.Add(FloatToStr(RoadLoadData.i_getriebe[i]));
end;
FileStream.Free;
end;