[Erledigt] Suche FileStorage Komponente

Rund um die LCL und andere Komponenten
Antworten
xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

[Erledigt] Suche FileStorage Komponente

Beitrag von xnalpf »

Hi,
ich suche eine Komponente, mit der ich beliebige Dateien in der Formulardatei speichern kann. Also so wie z.B. bei einer TImage Komponente ein Bild mit dem Formular gespiechert wird soll es eine "File" Property geben bei der man eine beliebige Datei von Platte wählen kann und die wird dann im Form mit abgespeichert.
Später zu Laufzeit soll es dann möglich sein diese Datei mit komponente.savetofile wieder auf Platte zu kopieren. Also als würde man image1.picture.bitmap.savetofile() aufrufen.
Kennt jemand so eine Komponente für Lazarus?
Zuletzt geändert von xnalpf am Fr 13. Feb 2015, 14:57, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: FileStorage Komponente

Beitrag von theo »

Weiss nicht ob ich richtig verstehe.

Eigentlich macht man das mit Ressourcen.

Aber ich habe mal vor Jahren ein paar Funktionen geschrieben, die sowas machen.
S. Anhang.

Enkodieren so:

Code: Alles auswählen

IF OpenDialog1.Execute then Memo1.text:=EncodeFileForUnit(OpenDialog1.FileName);    

Das gibt dann eine StringKonstante, die man sich in den Code kopieren kann.

Dekodieren so:

Code: Alles auswählen

  Strm:=TMemoryStream.Create;
  DecodeFileFromUnit(TestC,Strm);
  Image1.Picture.LoadFromStream(Strm);
  Strm.free;
Dateianhänge
EncodeforUnit.pas
(4.76 KiB) 50-mal heruntergeladen

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: FileStorage Komponente

Beitrag von xnalpf »

Ja das Prinzip ist richtig. Nur ist das Handling bei dir natürlich umständlicher als nötig. Jede komponente speichert in der IDE ihre Propertys in einem Stream in die Formulardatei. Und auf diese Propertys kann ich im Designmodus also in der IDE sowie zur Laufzeit zugreifen.

Ich kann z.B. auf die property Caption eines Labels zugreifen. Im Property Editor kann ich den Wert Lesen und schreiben. Und wenn ich mein Projekt speichere und einen Tag später das Projekt wieder öffne ist der Wert immer noch der gleiche da er halt in der Formulardatei gespeichert vorliegt.

Gleiches gilt zur Laufzeit. Gut - wenn ich zur Laufzeit die Property ändere wird das nicht in die Exe geschrieben. Aber lesen kann ich die Daten. Und weiter damit arbeiten.

Jetzt sind die Propertys von den Komponenten aber in der Regel Typisiert. In ein Image kann ich nur Bilddaten schrieben, in Caption nur Strings, Width, Height nur numerisch etc.

Eine FileStorage Komponente speichert beliebige Daten binär in der Property. Das ist der Trick. Gabs für Delphi zu Hauf. In den Jedi Komponenten war meine ich auch sowas. Ich hab so eine Komponente seinerzeit für Delphi auch mal programmiert. Mein Problem jetzt ist, dass das Handling mit Property Editor etc. unter Lazarus etwas anders ist. Das müsste ich alles umschreiben. Daher hoffe ich, dass es so eine Komponente evtl. fertig gibt.

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: FileStorage Komponente

Beitrag von xnalpf »

So, ich hab einfach kurzerhand meinen alten Delphi Quältext abgestaubt und für Lazarus modifiziert.
Leider ist dabei der ComponentEditor auf der Strecke geblieben aber ansonsten macht die Komponente das, was sie früher schon unter Delphi gemacht hat.
Wer sowas braucht mag es gerne zu seinem Nutzen nutzen.
Dateianhänge
BCointainer 0.1.rar
(6.14 KiB) 61-mal heruntergeladen

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: [Erledigt] Suche FileStorage Komponente

Beitrag von Michl »

Hab jetzt nicht alles gelesen, evtl. hattest du ja sowas, wie die TINIPropStorage oder TXMLPropStorage http://wiki.freepascal.org/TXMLPropStorage/de gesucht?!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: [Erledigt] Suche FileStorage Komponente

Beitrag von creed steiger »


xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: [Erledigt] Suche FileStorage Komponente

Beitrag von xnalpf »

Michl hat geschrieben:Hab jetzt nicht alles gelesen, evtl. hattest du ja sowas, wie die TINIPropStorage oder TXMLPropStorage http://wiki.freepascal.org/TXMLPropStorage/de gesucht?!
Die zwei sind wenn ich das richtig verstanden habe auch nur auf bestimmte Datentypen beschränkt. Ich wollte aber eine Kompnente mit der man beliebige Daten speichern kann.

xnalpf
Beiträge: 43
Registriert: Di 4. Sep 2007, 15:43

Re: [Erledigt] Suche FileStorage Komponente

Beitrag von xnalpf »

creed steiger hat geschrieben:mxStorage käme evtl in Frage

http://forum.lazarus.freepascal.org/ind ... ic=12056.0
Werde ich mir mal anschauen. Von der Beschreibung her ganu das gesuchte. Nur kam der Hinweis zu spät. Trotzdem danke!

Antworten