![]() |
Eigener Typ + TIniFile = Fehler????
also, ich versuche einen eigenen typ in eine inifile zu speichern
aber irgendwie is das resultat "anders als gewünscht"... :evil: erst mal was code: der typ bzw die typen
Delphi-Quellcode:
konstanten
TEuroMuenze = record
Vorhanden: Boolean; Wert: Integer; Kommentar: String; end; TEuroLand = record Name: String; Abk: String; Muenzen: array of TEuroMuenze; MuenzenCount: Integer; end; TProfil = record Land: array of TEuroLand; LandCount: Integer; IsChanged: Boolean; end;
Delphi-Quellcode:
erzeugen
const
STD_LAND = 12; //Länder STD_MUENZEN = 8; //Münzen STD_WERTE: array [1..STD_MUENZEN] of Integer = (1, 2, 5, 10, 20, 50, 100, 200); STD_ABK: array[1..STD_LAND] of String = ( 'A','B','D','E','F','FIN','GR','I','IRL','L','NL','P'); STD_LAENDER: array[1..STD_LAND] of String = ( 'Österreich','Belgien','Deutschland','Spanien','Frankreich','Finnland', 'Griechenland','Italien','Irland','Luxemburg','Niederlande','Portugal'); var Form1: TForm1; AktProfil: TProfil;
Delphi-Quellcode:
uns speichern
procedure TForm1.NeuesProfil1Click(Sender: TObject);
var i,j:Integer; begin if AktProfil.IsChanged then begin ProfilSpeichern1Click(Form1); SetLength(AktProfil.Land,STD_LAND); AktProfil.LandCount:=STD_LAND; for i:=1 to STD_LAND do begin SetLength(AktProfil.Land[i].Muenzen,STD_MUENZEN); AktProfil.Land[i].Name:=STD_LAENDER[i]; AktProfil.Land[i].Abk:=STD_ABK[i]; for j:=1 to STD_MUENZEN do begin AktProfil.Land[i].Muenzen[j].Kommentar:=''; AktProfil.Land[i].Muenzen[j].Wert:=STD_WERTE[j]; AktProfil.Land[i].Muenzen[j].Vorhanden:=False; AktProfil.Land[i].MuenzenCount:=STD_MUENZEN; end; end; end; end;
Delphi-Quellcode:
aber warum zum teufel ist die inifile danach nur mit der profil-section gefüllt???
procedure TForm1.SaveProfil(FileName: TFileName);
var SaveFile: TIniFile; temp:TStrings; i, j:Integer; begin //Leeren SaveFile:=TIniFile.Create(FileName); temp:=TStrings.Create; try //Speichern SaveFile.WriteInteger('Profil','Laender',AktProfil.LandCount); SaveFile.WriteBool('Profil','Laender',AktProfil.IsChanged); ShowMessage(IntToStr(AktProfil.LandCount)); for i:=1 to AktProfil.LandCount do begin ShowMessage(IntToStr(i)); SaveFile.WriteString('Land'+IntToStr(i),'Name',AktProfil.Land[i].Name); SaveFile.WriteString('Land'+IntToStr(i),'Abk',AktProfil.Land[i].Abk); SaveFile.WriteInteger('Land'+IntToStr(i),'Muenzen',AktProfil.Land[i].MuenzenCount); for j:=1 to AktProfil.Land[i].MuenzenCount do begin SaveFile.WriteBool('Land'+IntToStr(i),'ExMuenze'+IntToStr(j),AktProfil.Land[i].Muenzen[j].Vorhanden); SaveFile.WriteInteger('Land'+IntToStr(i),'ValMuenze'+IntToStr(j),AktProfil.Land[i].Muenzen[j].Wert); SaveFile.WriteString('Land'+IntToStr(i),'Muenze'+IntToStr(j),AktProfil.Land[i].Muenzen[j].Kommentar); end; end; finally Temp.Free; SaveFile.Free; end; end; ich habe die variable erzeugt und befüllt, aber die inifile bleibt vergleichsweise gefüllt. warum? LandCount ist 0, dabei sage ich AktProfil.LandCount:=STD_LAND; was soll das?? was mache ich falsch??? (ich hoffe ich erschlag euch mit dem code nicht.. :) ) |
Re: Eigener Typ + TIniFile = Fehler????
Hi,
ich habe mir deinen Source nicht genau angesehen, aber ich Frage mich ernsthaft, warum du Ini-Dateien verwenden willst. Stichwort ![]() Wenn du typisierte Dateien verwendest, verwendest du nur die Funktionen [oh]AssignFile, CloseFile[/oh] und Write(ln) bzw. Read(ln). Schau es dir zumindest an. Ansonsten kann ich nur Streams empfehlen, fast genauso einfach und sogar mit höhere Funktionalität/Kompatibilität. ;) Chris |
Re: Eigener Typ + TIniFile = Fehler????
es ging bei dem projekt eher darum, ein wenig den umgang mit inis zu üben *ggg*
|
Re: Eigener Typ + TIniFile = Fehler????
Zitat:
|
Re: Eigener Typ + TIniFile = Fehler????
dann halt nicht :evil:
was kann ich denn für xml nutzen? wie sähe mein code in etwa für xml aus? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz