AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView in einen Stream speichern und laden

Ein Thema von Helmi · begonnen am 16. Apr 2005 · letzter Beitrag vom 17. Apr 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#11

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 10:55
mmh
gute Frage

ich stell das jetzt einfach mal so frei in den Raum - ich weiss nicht was besser ist, die Imagelist mitspeichern oder extra übertragen
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 11:08
Hallo,

ich habe schnell die App zusammengecodet. Sieh sie dir an, teste sie durch. Die Icons werden noch nicht beruecksichtigt, das ist aber eine Kleinigkeit wenn du ein bisschen reindenkst
Ich speichere zur Zeit noch in ein File, aber die TmxJsCollection bietet auch die Moeglichkeit in einen Stream zu speichern. Einfach SaveToStream/LoadFromStream anstatt SaveToFile/LoadFromFile verwenden.
Ich habe den Code ein wenig dokumentiert, ich hoffe du steigst durch, ansonsten frag einfach hier.

Greetz
alcaeus
Angehängte Dateien
Dateityp: zip listviewsaver_159.zip (279,4 KB, 32x aufgerufen)
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#13

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 12:08
Hallo,

danke für dein beispiel-programm

Ich hab das mal so übernommen - nur eine frage hätt ich:
Wie speichere ich in einen Stream?
Ich hab mal TStream und TMemoryStream probiert

aber sobald ich laden will bekomm ich nen fehler "Stream-Lesefehler"
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#14

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 12:12
Hast du den Stream erzeugt?
Probier mal, den Stream zu erzeugen (TMemoryStream), und in den Stream zu schreiben. Anschliessend saeuberst du die ListView (Items.Clear), und ladest die Collection wieder aus dem Stream. Wichtig ist, den Stream nicht freizugeben, sonst sind die Daten futsch

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#15

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 12:19
Hallo,

also ich mal folgendes:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView_Stream := TMemoryStream.Create;
  iColCount := 1;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(ListView_Stream);
end;
Nur der Unterschied ist, dass ich in eine andere ListView lade.

Also: Ich speichere die ListView1 in einen Stream und lade dann den Inhalt des Streams in die ListView2.

Kann da ein Fehler auftreten?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#16

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 12:21
Zitat von Helmi:
Also: Ich speichere die ListView1 in einen Stream und lade dann den Inhalt des Streams in die ListView2.

Kann da ein Fehler auftreten?
Eigentlich nicht. hast du auch Stream.Position auf 0 gesetzt? Evtl. koennte das der Fehler sein...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#17

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 12:28
Hallo,

das war der Fehler.

Ich muss, bevor der Stream geladen wird, Stream.Position auf 0 setzen.

Interessanterweise wird das Icon, dass ich ja in der ersten Spalte habe, mitgespeichert.

Danke für deine Hilfe!!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#18

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 15:30
Jetzt hätt ich aber trotzdem nochmal eine Frage:

Wie kann ich das Icon jeder Zeile mit in den Stream speichern?

Ich dachte das würd funktionieren, hatte aber einen Fehler bei mir im Test-Projekt
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#19

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 15:38
Zitat von Helmi:
Jetzt hätt ich aber trotzdem nochmal eine Frage:

Wie kann ich das Icon jeder Zeile mit in den Stream speichern?

Ich dachte das würd funktionieren, hatte aber einen Fehler bei mir im Test-Projekt
Sorry, das ich das mal so direkt sagen muss...
Aber Alki war einfach dumm, als er dir das Ganze Rundumsorglos-Paket geliefert hat. Es war absolut klar, dass du nun wegen jeder Kleinigkeit sofort nachfragst bevor du nachdenkst.
Hat es dich denn überhaupt nicht interessiert, was die dpCollection ist/macht? Warum nur SubItems und Caption in der Datei stehen?

Hättest du das wirklich gemacht, wäre dir aufgefallen, dass die collectionItem-Ableitung nur 2 Published Properties hat.
Die zufälligerweise genauso heißen, wie die einzigen 2 Werte eines Items, die in der Datei landen.
Wenn dir jetzt kein Licht aufgeht, wie du auch noch den ItemIndex da reinkriegst, ist dir wohl nicht mehr zu helfen.

Wenn ich etwas offensiv klang, war das kein Zufall.
Es gibt nur wenige Dinge, bei denen ich mich aufregen kann. Desinteressse für seinen Job ist eines davon.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#20

Re: ListView in einen Stream speichern und laden

  Alt 17. Apr 2005, 15:42
Nun, da musst du dir ueberlegen, ob du die Images direkt speichern willst, oder nur die Indize der Images. Bei letzterem reicht eine published Integer-property, wenn du das Image selbst speichern willst, musst du ein TBitmap oder so zur Collection hinzufuegen, und das Bitmap aus der Imagelist holen. Beim Laden schreibst du es in die Imagelist. Nachteil: du hast Images doppelt und dreifach, ausser du fuegst eine entsprechende Pruefung ein.
Alternativ kannst du die Collection zweiteilen: eine globale Collection, welche 2 Subcollections hat: eine fuer die ListView-Items, eine fuer die Imagelist.

@Robert: ja, das Beispiel ist zu umfangreich geraten, da hast du Recht.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:32 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