|
Registriert seit: 20. Jan 2011 Ort: Leipzig 15 Beiträge Turbo Delphi für Win32 |
#1
Hallo,
Ich fingere zur Zeit an einem Simulator für die Berrechnung von Gefechten rum. Ich erstelle zu erst ein Objekt Einheit und will es später weiterverwenden. Ich wollte bis jetzt die Sache in einem TFilestream verwenden. jedoch scheint es Probleme beim Speichern des Streams zu geben. Ich lese von Comboboxen den gewählten Itemindex aus und wandle diese in einen String um und übergebe diese Variable an mein Objekt...(Ich weiss nicht wie ich direkt Integerwerte in einen Streaj speicher). Dies läuft auch einwandfrei..Trotz zig maliger Beobachtung der Speicherung im Debugger,welches auch scheinbar das macht, was es soll, werden irgendwie auf mir unersichtliche Weise die Werte "um eine Position" verschoben. Bsp aus Combobox6 wird der Index 4 in der Variable eigentlich gespeichert, jedoch beim laden hat Combobox6 den Wert 0 dafür aber Combobox7 den Wert.... Ich bin am verzweifeln... Ich verwende Turbo Delphi 2006 und Vista alle Variablen sind vom Typ AnsiString.... Hier die Procedure zum Speichern der Werte ins Object und dessen Speicherung in einen TFilestream:
Delphi-Quellcode:
Hier die Procedure aus der Klasse Einheittyp zum speichern
//Einstellungen speichern
procedure TForm2.Button1Click(Sender: TObject); var Einheit : TEinheitTyp; Stream : TFilestream; i : Integer; S : String; begin Einheit:= TEinheittyp.Create; // neues Exemplar muss in die Liste Einheit.Init; //NeuerEinheitTyp.SetzeName(Edit1.Text); Einheit.SetzeName(Form2.Edit1.Text); Einheit.SetzeGrundTyp(IntToStr(ComboBox1.ItemIndex)); Einheit.SetzeGeschwindigkeit(IntToStr(ComboBox2.ItemIndex)); Einheit.SetzeBenzinGef(IntToStr(ComboBox3.ItemIndex)); Einheit.SetzeBenzinBew(IntToStr(ComboBox4.ItemIndex)); Einheit.SetzeMunGef(IntToStr(ComboBox5.ItemIndex)); Einheit.SetzeGrösse(IntToStr(ComboBox13.ItemIndex)); //Schreiben Landeinheit Werte Einheit.SetzePanzerAn(IntToStr(ComboBox6.ItemIndex)); Einheit.SetzePanzerVer(IntToStr(ComboBox7.ItemIndex)); Einheit.SetzeInfAn(IntToStr(ComboBox8.ItemIndex)); Einheit.SetzeInfVer(IntToStr(ComboBox9.ItemIndex)); Einheit.SetzeBoLuAn(IntToStr(ComboBox10.ItemIndex)); Einheit.SetzeBoLuVer(IntToStr(ComboBox11.ItemIndex)); Einheit.SetzeLandSpez(IntToStr(ComboBox12.ItemIndex)); //Schreiben Lufteinheiten Werte; Einheit.SetzeLuLuAn(IntToStr(ComboBox14.ItemIndex)); Einheit.SetzeLuLuVer(IntToStr(ComboBox15.ItemIndex)); Einheit.SetzeLuBoAn(IntToStr(ComboBox16.ItemIndex)); Einheit.SetzeLuBoVer(IntToStr(ComboBox17.ItemIndex)); //Schreiben Marineeinheiten Werte; Einheit.SetzeSeeSeeAn(IntToStr(ComboBox18.ItemIndex)); Einheit.SetzeSeeSeeVer(IntToStr(ComboBox19.ItemIndex)); Einheit.SetzeSeeLuftAn(IntToStr(ComboBox20.ItemIndex)); Einheit.SetzeSeeLuftVer(IntToStr(ComboBox21.ItemIndex)); Einheit.SetzeSeeSpez(IntToStr(ComboBox22.ItemIndex)); //Schreiben in Datei mit Filestream Stream := TFileStream.Create(Form1.programmpfad+'\Einheittyp\'+Einheit.GibName, fmCreate); Einheit.InDateiSchreiben(Stream,Form1.programmpfad+'\Einheittyp\'+Einheit.GibName); Stream.Free; Einheit.Free;
Delphi-Quellcode:
und hier die zum lesen aus der Klasse Einheittyp
procedure TEinheitTyp.InDateiSchreiben (var Fs : TFilestream; Filename : String);
(* -------------------------------------------------------------------- *) var len : integer; begin DeleteFile(Filename); //Allgemeine Werte FS.Position:=0; Len:=0; Len := Length(Name); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(Name)^, Len); Len:=0; Len := Length(GrundTyp); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(GrundTyp)^, Len); Len:=0; Len := Length(Geschwindigkeit); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(Geschwindigkeit)^, Len); Len:=0; Len := Length(BenzinGef); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(BenzinGef)^, Len); Len:=0; Len := Length(BenzinBew); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(BenzinBew)^, Len); Len:=0; Len := Length(MunGef); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(MunGef)^, Len); Len:=0; Len := Length(Grösse); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(Grösse)^, Len); Len:=0; Len := Length(BenzinGef); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(BenzinGef)^, Len); Len:=0; //Landeinheitwerte Len := Length(PanzerAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(PanzerAn)^, Len); Len:=0; Len := Length(PanzerVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(PanzerVer)^, Len); Len:=0; Len := Length(InfAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(InfAn)^, Len); Len:=0; Len := Length(InfVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(InfVer)^, Len); Len:=0; Len := Length(BoLuAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(BoLuAn)^, Len); Len:=0; Len := Length(BoLuVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(BoLuVer)^, Len); Len:=0; Len := Length(LandSpez); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(LandSpez)^, Len); Len:=0; //Lufteinheitwerte Len := Length(LuLuAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(LuLuAn)^, Len); Len:=0; Len := Length(LuLuVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(LuLuVer)^, Len); Len:=0; Len := Length(LuBoAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(LuBoAn)^, Len); Len:=0; Len := Length(LuBoVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(LuBoVer)^, Len); Len:=0; //Marineeinheitwerte Len := Length(SeeSeeAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(SeeSeeAn)^, Len); Len:=0; Len := Length(SeeSeeVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(SeeSeeVer)^, Len); Len:=0; Len := Length(SeeLuftAn); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(SeeLuftAn)^, Len); Len:=0; Len := Length(SeeLuftVer); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(SeeLuftVer)^, Len); Len:=0; Len := Length(SeeSpez); FS.WriteBuffer(Len, SizeOf(Len)); FS.WriteBuffer(PAnsiChar(SeeSpez)^, Len); end;
Delphi-Quellcode:
procedure TEinheitTyp.AusDateiLesen (var Fs : TFilestream) ;
(* -------------------------------------------------------------------- *) var len : integer; begin Len:=0; //Allgemeine Werte FS.read(Len, SizeOf(Len)); SetLength(Name, Len); FS.read(PChar(Name)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(GrundTyp, Len); FS.read(PChar(GrundTyp)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(Geschwindigkeit, Len); FS.read(PChar(Geschwindigkeit)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(BenzinGef, Len); FS.read(PChar(BenzinGef)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(BenzinBew, Len); FS.read(PChar(BenzinBew)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(MunGef, Len); FS.read(PChar(MunGef)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(Grösse, Len); FS.read(PChar(Grösse)^, Len); Len:=0; //Landeinheitwerte FS.read(Len, SizeOf(Len)); SetLength(PanzerAn, Len); FS.read(PChar(PanzerAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(PanzerVer, Len); FS.read(PChar(PanzerVer)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(InfAn, Len); FS.read(PChar(InfAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(InfVer, Len); FS.read(PChar(InfVer)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(BoLuAn, Len); FS.read(PChar(BoLuAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(BoLuVer, Len); FS.read(PChar(BoLuVer)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(LandSpez, Len); FS.read(PChar(LandSpez)^, Len); Len:=0; //Lufteinheitwerte FS.read(Len, SizeOf(Len)); SetLength(LuLuAn, Len); FS.read(PChar(LuLuAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(LuLuVer, Len); FS.read(PChar(LuLuVer)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(LuBoAn, Len); FS.read(PChar(LuBoAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(LuBoVer, Len); FS.read(PChar(LuBoVer)^, Len); Len:=0; //Marineeinheitenwerte FS.read(Len, SizeOf(Len)); SetLength(SeeSeeAn, Len); FS.read(PChar(SeeSeeAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(SeeSeeVer, Len); FS.read(PChar(SeeSeeVer)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(SeeLuftAn, Len); FS.read(PChar(SeeLuftAn)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(SeeLuftVer, Len); FS.read(PChar(SeeLuftVer)^, Len); Len:=0; FS.read(Len, SizeOf(Len)); SetLength(SeeSpez, Len); FS.read(PChar(SeeSpez)^, Len); end;
Sebastian
Geändert von Klausi1305 (20. Jan 2011 um 20:11 Uhr) |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |