[Erledigt] Suche FileStorage Komponente
[Erledigt] Suche FileStorage Komponente
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?
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.
Re: FileStorage Komponente
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:
Das gibt dann eine StringKonstante, die man sich in den Code kopieren kann.
Dekodieren so:
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
Re: FileStorage Komponente
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.
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.
Re: FileStorage Komponente
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.
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
Re: [Erledigt] Suche FileStorage Komponente
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;
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: [Erledigt] Suche FileStorage Komponente
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.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?!
Re: [Erledigt] Suche FileStorage Komponente
Werde ich mir mal anschauen. Von der Beschreibung her ganu das gesuchte. Nur kam der Hinweis zu spät. Trotzdem danke!creed steiger hat geschrieben:mxStorage käme evtl in Frage
http://forum.lazarus.freepascal.org/ind ... ic=12056.0