Bilder und Text in einen Datei speichern

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
Juri
Beiträge: 3
Registriert: Mi 21. Sep 2011, 10:28
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.0)
CPU-Target: xxBit

Bilder und Text in einen Datei speichern

Beitrag von Juri »

Guten Tag sehr geheerte Damen und Herren!
Ich habe folgendes Problem: in meinem Programm kann User Bilder öffnen und dann kleine Ausschnitte aus Bildern ausschneiden und danach sollen diese mehrere Bilder und ein ini Datei in einer Datei auf der HDD gespeichert werden und an anderen Computern in meiener Programm als ein Modul geöffnet werden und da soll ini Datei abgelesen werden und Bilder benutzt werden. Ich suche schon 3 Wochen einen Lösung und habe nur ein Wariant mit Record gefunden, aber es funktioniert nicht. Ich bin Anfänger, bitte helfen Sie mir?

Hier ist meine code:

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
 
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
type
  TMensch=record
  name:string[20];
  alter:byte;
  bild:TImage;
  end;
 
var
  Form1:TForm1;
  Mensch:TMensch;
  f:File of TMensch;
  v:TMensch;
  bm:TImage;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(f,'Juri.dat');
Rewrite(f);
Reset(f);
v.name:='Juri';
v.alter:=40;
v.bild.Picture.LoadFromFile('Geschenk.bmp');
Write(f,v);
CloseFile(f);
end;
 
end.
Zuletzt geändert von Lori am Mi 21. Sep 2011, 19:25, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter benutzen.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Bilder und Text in einen Datei speichern

Beitrag von mse »

Das geht leider nicht so einfach. Das Problem ist, dass bild in

Code: Alles auswählen

TMensch=record
 name:string[20];
 alter:byte;
 bild:TImage;
 end;

nicht die eigentlichen Bilddaten enthält, sondern die Speicheradresse des Bild-Objektes. Die Struktur der Bilddaten ist von Bild zu Bild unterschiedlich und kann daher nicht in einem Record mit fixem Aufbau gespeichert werden.
Alternativen wären z.B die Verwendung einer SQlite3 Datei oder die Bilddateien separat abzulegen und im TMensch record den Bilddateinamen zu speichern.

Martin
Zuletzt geändert von mse am Mi 21. Sep 2011, 12:14, insgesamt 1-mal geändert.

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

Re: Bilder und Text in einen Datei speichern

Beitrag von theo »

Wenn du keine Datenbank verwenden willst, verwendest du am besten einen TFileStream zum sequenzialisieren der Daten.
Da kannst du WriteAnsiString(), WriteByte() und WriteBuffer() verwenden.
Die zu speichernden Daten eines TImage liegen z.B. in seinem Bitmap (z.B. Image1.Picture.Bitmap.SaveToStream(Stream); )

http://www.freepascal.org/docs-html/rtl ... tream.html
http://www.freepascal.org/docs-html/rtl ... tream.html

Juri
Beiträge: 3
Registriert: Mi 21. Sep 2011, 10:28
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.0)
CPU-Target: xxBit

Re: Bilder und Text in einen Datei speichern

Beitrag von Juri »

Vielen Dank für Ihre Hilfe mse und theo!

Ich habe schon mal mit der Datenbank probiert, ich habe geschrieben "Table1.CreateTable" aber kommt immer wieder nur Fehlermeldung, ich habe alles mögliches gemacht und trotzdem ging nicht. Wenn ich Datenbank verwende dann soll diese Datenbanktabelle am Computer des Users dinamisch erstellt werden und das kriege ich nicht hin.

mse, ich kenne SQlite3 Datei überhaupt nicht, ist das sehr schwer? Kannst du mir das erklären mit dem Programmcode wenn möglich? Separat Bilder abzulegen geht leider nicht, weil diese Datei, mit Bildern und ini File wird als ein Programmmodul und soll über Internet zum Download stehen und zur Programm hinzugefügt werden.

theo ich habe schon einiges gelesen über TFileStream, vielen Dank für die Links, aber mit TFileStream bin ich leider nicht klar gekommen. Kannst Du mir bitte einen Programmcode zeigen wo ein Bild und eine ini File so gespeichert werden?

Vielen Dank für die Hilfe!!!

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Bilder und Text in einen Datei speichern

Beitrag von mse »

Juri hat geschrieben:mse, ich kenne SQlite3 Datei überhaupt nicht,

SQLite3 ist eine SQL Datenbank die ohne Server auskommt und für deine Anwendung vermutlich gut geeignet.
http://www.sqlite.org/

FPC, Lazarus und MSEgui haben Unterstützungskomponenten für SQLite3.
ist das sehr schwer?

Naja, das ist Ansichtssache. :-)
Viele Programmierer mögen die Arbeit mit Datenbanken überhaupt nicht. Ich würde vorschlagen, zuerst die Methode mit der separaten Speicherung der Bilddateien zu benützen, bis du dich besser in Pascal und FPC zurechtfindest.

Martin

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

Re: Bilder und Text in einen Datei speichern

Beitrag von theo »

Juri hat geschrieben:theo ich habe schon einiges gelesen über TFileStream, vielen Dank für die Links, aber mit TFileStream bin ich leider nicht klar gekommen. Kannst Du mir bitte einen Programmcode zeigen wo ein Bild und eine ini File so gespeichert werden?


Ich verstehe nicht ganz, was du hier mit dem ini File genau meinst. Meinst du einfach dein Daten-File (mit TFileStream)?

Juri
Beiträge: 3
Registriert: Mi 21. Sep 2011, 10:28
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.0)
CPU-Target: xxBit

Re: Bilder und Text in einen Datei speichern

Beitrag von Juri »

theo, ich meine dass in einer ini Datei Info über den Modul und Modulname und auch Name des Modulautors gespeichert ist. Alle Bilder, die User geschnitten hat währe mir lieber in einer ImageListe zusammen mit der ini Datei speichern.

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

Re: Bilder und Text in einen Datei speichern

Beitrag von theo »

Dann mach es besser so, wie mse sagte.

Antworten