AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ArrayRecord von Listboxen+anderen object speichern und laden
Thema durchsuchen
Ansicht
Themen-Optionen

ArrayRecord von Listboxen+anderen object speichern und laden

Offene Frage von "Ness64"
Ein Thema von Ness64 · begonnen am 12. Apr 2009 · letzter Beitrag vom 14. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Ness64

Registriert seit: 12. Apr 2009
8 Beiträge
 
#1

ArrayRecord von Listboxen+anderen object speichern und laden

  Alt 12. Apr 2009, 16:08
Hullo,
ich komme an einer Stelle meines Proghramms nicht weiter!
Undzwar ich habe eine Listbox,wo Personen generiert werden.
Name1,Name3
maximal 5 Personen!
Ich habe gedacht einen Array Record zu erstellen,da diese 5 Personen ihre eigenen Nummern haben. Wieso Array? Weil ich später auf 30 Personen hochgehen will und da sind einzelne nicht empfehlenswert.


Erstmal die definierungen! Keine Angst,momentan funktioniert alles! Wenn "end" oder sowas fehlt,dann anscheinend vergessen zu kopieren!

Delphi-Quellcode:
type
  TGast = record //Meine Main Record! Nur
    Name: string[15]; //Stringwert
    skill1: string[5]; //Zahlenwert
    skill2: string[5]; //Zahlenwert
    aktiv:boolean; //boolean

 TGastListe = array of TGast; //Zweite Record

var
  Form1: TForm1;
  GastListe: TGastListe; //Namen der Leute in Listbox1 werden dannach in gaslite gespeichert!
  Gast: TGast;
  maxanzahl:integer;

 end;
Die Formcreate:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
button2.hide;
SetLength(GastListe, 5); //Gastliste darf nur 5 Leute haben! Dynamisches Array*hust*
end;
Soweit so gut haben wir also einen Array Record! IN diesen Arrayrecord Gastliste speichern wir die Namen der Gäste,die in die Listboxen eingetragen werden.

Jetzt die ButtonNamen Prozedur,wo ich durch ein Edit Feld Namen generiere,die in eine Listbox reingetan werden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
forbidden:boolean;
begin
Gast.name := Edit1.text;
Listbox1.items.add(Gast.name); //Listbox wird jetzt der Name von Edit1.text addiert!
end;
Jetzt kommt die sehr wichtige Listboxfunction,wenn ich auf die Namen in der Listbox anklicke:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Gastliste[Listbox1.itemindex].name := Listbox1.items[Listbox1.itemindex];
//Gastliste bekommt den Namen von der Stelle,wo man in listbox 1 geklickt hat!

    Label1.caption := 'Angeklickte Person: ' + Gastliste[Listbox1.itemindex].name; //Dient zur Sicherstellung,ob der geklickte auch wirklich geklickt wurde!
end;
Bei Button2 kann man einstellen,ob derjenige aktiv ist! Vorsicht! Ich habe kein FALSE! Und das mit Absicht....
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Gastliste[Listbox1.itemindex].aktiv := true; //Die Person,die man in Listbox angeklickt hat,wird jetzt auf aktiv gestellt!
end;
Verwirrt euch nicht bei gast.name und gastliste.name!
Ich brauche gastliste.name,damit ich weiß,an welcher Stelle in derListbox welcher Gast gemeint ist!
ich kann also nicht gast.name[i] schreiben! da komtm ein Fehler! Deshalb brauche ich einen zweiten record,der sogar ein array besitzt!

Soweit funktioniert ALLES! Wenn ich 5 Personen generiere und Person 1 aktiv mache,dann ist auch wirklich Person1 aktiv und die anderen nicht!
Jetzt die große PREISFRAGE:

Wie kann ich diesen Record in eine RICHTIGE Text-/INIdatei speichern UND erfolgreich Laden,so das die gespeicherten Leute wieder in Listbox zu sehen sind und,das auch wirklich die jenigen aktiv dargestellt werden?


Ich habe in mehreren Foren gefragt und bisher blieb die Antwort aus
Ich hoffe ihr könnt mir Helfen! Auf Wunsch bi ich sogar Bereit meine Pas Datei hochzuladen,aber ich denke meine Erklärungen sind GENAU genug,um euch weiterhelfen zu können
Mit GROßEM DANK im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 16:19
Für INI-Dateien kannst du hier einmal schauen:
http://www.delphi-treff.de/tipps/dat...i/Ini-Dateien/

Wenn du aber Records einer festen Größe hast wie in deinem Fall, dann bieten sich typisierte Dateien an, die sind einfach, dafür kannst du eben nur gleiche feste Datentypen darin speichern.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Ness64

Registriert seit: 12. Apr 2009
8 Beiträge
 
#3

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 17:33
wie das mit array records geht will ich ja wissen ^^
Von datenspeicherung habe ich nicht so viel Ahnung wie die Profis hier im Forum
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 17:43
Hast du schon mal dort geschaut.
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 17:44
Schau doch mal in der Suche unter Hier im Forum suchenTypisierte Datei
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ness64

Registriert seit: 12. Apr 2009
8 Beiträge
 
#6

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 18:30
Naja,irgendwie wendet keiner davon das an,was ich versuche...
Das richtige Speichern wird mir dadurch zu einem noch größerem Rätsel...

PS :INI Dateien würden nicht gehen,da ich IMMER eine "=x" angeben muss und das will ich nicht.
Für jeden müsste ich eine ini datei machen und das wäre ein bisschen zu umständlich
Die Anwendungen mit Filestream sind ganz anders,meins kann man mit den record Werten der anderen nicht vergleichen :/
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 18:35
Du brauchst eine "file of TGast", und der Rest sollte den Beispielen gleichen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Ness64

Registriert seit: 12. Apr 2009
8 Beiträge
 
#8

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 21:27
ok,jemand hat gemeint ich solle Ini Dateien nutzen.
Das habe ich jetzt probiert,das Speichern funktioniert SUPER,aber wie bereits erwartet habe ich großes Schwierigkeiten mit
dem Laden!

Erstmal die Prozedur des neuen Buttons,der die Ini Datei generiert.

Delphi-Quellcode:
var Ini: TIniFile;
VAR i:integer;
begin
 Ini.Free;
    Ini:=TIniFile.Create('C:\Programme\Borland\Delphi7\Projects\RECORDS\Test.ini');
  try
    for i:= 0 to Listbox1.count -1 do
    begin
      Ini.WriteString('Memberlist',Listbox1.items[i],''); // Hier werden die Namen reingeschrieben!
      Ini.WriteInteger('Skill1',Listbox1.items[i],);
      Ini.WriteInteger('Skill2',Listbox1.items[i], 10);
      Ini.WriteBool('Aktiv',Listbox1.items[i],gastliste[i].aktiv);
    end;
  finally
    Ini.Free;
  end;
Somit speichert der jetzt diese Werte in die Ini Datei!
In der INI Datei steht beispielsweise folgendes:
Delphi-Quellcode:
[Memberlist]
Ness=
Ness 64=
Testplayer=
[Skill1]
Ness=5
Ness 64=5
Testplayer=6
Es ist extrem komisch ,wieso da jetzt ein Gleichheitszeichen ist,aber ein Verusch bei InI war es wert.
Das Problem ist jetzt,ich habe Schwierigkeiten,das wieder in die LISTBOX1 hinzuzufügen. Wenn wir annehmen,dass das oben jetzt unsere wirkliche INI Datei ist,m+sste durch den Laden Button in der Listbox folgendes stehen:
Ness
Ness 64
Testplayer

Und die Record Varaible müsste dann so gefühlt sein:
gastliste[0].name = Ness
gastliste[1].name = Ness 64
gastliste[2].name = Testplayer
gastliste[0].level = 5
gastliste[1].level = 5
gastliste[2].level = 6

Und wie man das jetzt macht ist mir noch ein Rätsel!!
Da INI ja für feste SAchen genutzt werden,ist es ien zustäzliches Problem,denn wir können nicht wissen,wieviele Personen beim nächsten Mal generiert werden...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 12. Apr 2009, 21:31
Wie eine INI-Datei aufgebaut ist, ist dir offenbar nicht klar...
Innerhalb der Sektionen stehen immer Wertepaare.
Code:
[Sektionsname]
Wertname1=Wert2
Wertname2=Wert2
...
Bei dir also z.B. so:
Code:
[Memberlist]
Member1=Ness
Member2=Ness 64
Member3=Testplayer
[Skill1]
Ness=5 
Ness 64=5 
Testplayer=6
Du kannst auch eine Liste der Wertenamen holen, usw.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Ness64

Registriert seit: 12. Apr 2009
8 Beiträge
 
#10

Re: ArrayRecord von Listboxen+anderen object speichern und l

  Alt 13. Apr 2009, 14:39
Da es keine umfangreichen Tuts gibt naja srry dafür!
Ich habe das sofort umgeändert,nur jetzt taucht zum ersten Mal ein Fehler auf:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var Ini: TIniFile;
var i :integer;
begin

  Ini:=TIniFile.Create('C:\Programme\Borland\Delphi7\Projects\RECORDS\Test.ini');
  try
    for i:= 0 to Listbox1.count -1 do
    begin
     Ini.WriteString('Memberlist','Name',listbox1.Items[i]); // Die Namen werden am Ende hinzugefügt!

      Ini.WriteInteger('Skill1',Listbox1.items[i], 5); //Ob sie einen Skill Wert besitzen und jeder soll den Wert 5 haben

    end;
  finally
    Ini.Free;
  end;

end;
FEHLER: Wenn ich mehr als 2 Namen generiere,dann erscheint in der INI File nicht der zweite Name!
Sagen wir,ich habe Ness und Ness 64 generiert und beide haben den Skillwert 5! Dann steht folgendes in der INI File:

Delphi-Quellcode:
[Memberlist]
Name=Ness 64
[Skill1]
Ness=5
Ness 64=5
Komischerweise wird Ness unterschlagen! Immer der letzte generierte wird der INI File hinzugefügt...
Aber was noch komischer ist: Alle generierten Leute werden unter der Skil lSection wieder hieingeschrieben!
Das was ich da oben geändert habe,war nur von der dritten Stelle in (Ini.WriteString) zur zweiten Stelle zu tauschen.
MFG Ness
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz