Parameter speichern/laden/drucken

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Parameter speichern/laden/drucken

Beitrag von McReier »

Hallo Freunde,
ich habe letzte Nacht mein Programm soweit hingebracht, dass es alles tut, was ich so wollte.
Dank des Forums, ist es besser geworden, als ich mir das vorgestellt habe.
Vielen Dank dafür!!

Nun habe ich noch drei Themen, die ich einbinden will.
1. Ich will bestimmte Variablen wegsichern
2. Diese sollen wieder ladbar sein (logisch, sonst macht 1 keinen Sinn)
und
3. ich will ein TabSheet (so wie es dargestellt wird) drucken.

Dazu ein kleines Programmbeispiel mit der konkreten Frage, wie ich
E1,E2,E2 und die SUMME speichere, wieder laden kann und dieses TabSheet drucke

Code: Alles auswählen

unit Unit1;
 {$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  E1,E2,E3: real; //Eingabewerte
  SUMME: real;             //SUmme aus Eingabewerte
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
  E1:=StrToFloat(Edit1.Text);   //Umwandlung Text in Zahl
  E2:=StrToFloat(Edit2.Text);   //Umwandlung Text in Zahl
  E3:=StrToFloat(Edit3.Text);   //Umwandlung Text in Zahl
     SUMME:=E1+E2+E3;
Label4.Caption:=floattostrf(SUMME, ffCurrency, 15, 1);  //Anzeige Ergebnis in Label4
end;
 
procedure TForm1.Edit2Change(Sender: TObject);
begin
  E1:=StrToFloat(Edit1.Text);   //Umwandlung Text in Zahl
  E2:=StrToFloat(Edit2.Text);   //Umwandlung Text in Zahl
  E3:=StrToFloat(Edit3.Text);   //Umwandlung Text in Zahl
     SUMME:=E1+E2+E3;
Label4.Caption:=floattostrf(SUMME, ffCurrency, 15, 1);  //Anzeige Ergebnis in Label4
 
end;
 
procedure TForm1.Edit3Change(Sender: TObject);
begin
  E1:=StrToFloat(Edit1.Text);   //Umwandlung Text in Zahl
  E2:=StrToFloat(Edit2.Text);   //Umwandlung Text in Zahl
  E3:=StrToFloat(Edit3.Text);   //Umwandlung Text in Zahl
     SUMME:=E1+E2+E3;
Label4.Caption:=floattostrf(SUMME, ffCurrency, 15, 1);  //Anzeige Ergebnis in Label4
end;
 
end.
 
Vielen Dank!!

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

Re: Parameter speichern/laden/drucken

Beitrag von theo »

Zum Speichern und Laden wären IniFles eine Variante:

http://wiki.freepascal.org/Using_INI_Files/de

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Parameter speichern/laden/drucken

Beitrag von Scotty »


McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Parameter speichern/laden/drucken

Beitrag von McReier »

theo hat geschrieben:Zum Speichern und Laden wären IniFles eine Variante:

http://wiki.freepascal.org/Using_INI_Files/de
Hallo,
danke für den Link. Leider passiert beim Klick auf das Symbol nix :(
Hier mein Quelltext:

Code: Alles auswählen

procedure TForm1.Image29Click(Sender: TObject);
 var
   Ini: TIniFile;
   begin
     Ini:=TIniFile.Create(savedialog1.Filename);
     Ini.WriteString('Variable_A','Test',MaskEdit145.Text);
     ini.free;
   end;    
Danke!

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Parameter speichern/laden/drucken

Beitrag von Thomas B. »

Komisch, probier mal

Code: Alles auswählen

...
Ini.UpdateFile;
...

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

Re: Parameter speichern/laden/drucken

Beitrag von theo »

Hier geht das. Bist du sicher, dass auch ein Dateiname angegeben ist?

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Parameter speichern/laden/drucken

Beitrag von McReier »

theo hat geschrieben:Hier geht das. Bist du sicher, dass auch ein Dateiname angegeben ist?
Hast Recht, wenn ich

Code: Alles auswählen

Ini:=TIniFile.Create(savedialog1.Filename);
durch

Code: Alles auswählen

Ini:=TIniFile.Create('D:\test.txt');
ersetzte funktionierts.
Ich hätte aber gerne die Auswahl des Speicherortes mit einer "festen" Endung vorgegeben und dachte mir ich muss dann mit SaveDialog arbeiten.
Ist die Kombination TIniFile it SaveDialog nicht möglich??
Danke! McReier

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Parameter speichern/laden/drucken

Beitrag von Scotty »

http://wiki.lazarus.freepascal.org/Howt ... eDialog/de

Du stellst grundlegende Fragen, die in jedem Tutorial (auch für Delphi) besprochen werden.

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Parameter speichern/laden/drucken

Beitrag von wp_xyz »

Hast du SaveDialog1 überhaupt ausgeführt? Das normale Vorgehen ist z.B.: Im OnClick eines Buttons (Menüeintrags etc.) wird SaveDialog ausgeführt (SaveDialog1.Execute); wenn diese Funktion true ist, speicherst du. Du musst selbst speichern, es geht nichts automatisch.

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
var
  ini: TCustomIniFile;
begin
  if SaveDialog1.Execute then begin
    ini := TIniFile.Create(SaveDialog1.FileName);
    try
      Ini.WriteString('Variable_A','Test',MaskEdit145.Text);
      // etc.
    finally
      ini.Free;
    end;
  end;
end;
 

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Parameter speichern/laden/drucken

Beitrag von McReier »

Hallo,
klappt wirklich gut :lol: Danke dafür.
Gibt es noch eine Möglichkeit, dass ich den Dateinamen in "Speichern unter" vorschlage (z.B. Test.ini)?
mit

Code: Alles auswählen

  ini := TIniFile.Create(SaveDialog1.FileName+'test.ini'); 
wird test.ini angefügt aber ich will ja nichts anfügen, sondern den vollständigen Namen vorschlagen.

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

Re: Parameter speichern/laden/drucken

Beitrag von theo »

Schon mal in den Objektinspektor geschaut beim Savedialog?
Wie könnte diese Eigenschaft wohl heißen? Welche der 11 Eigenschaften ist es wohl?
Rechne nicht einem Nobelpreis, falls du es herausfinden solltest. ;-)

McReier
Beiträge: 48
Registriert: Sa 17. Aug 2013, 11:35

Re: Parameter speichern/laden/drucken

Beitrag von McReier »

McReier hat geschrieben:Hallo,
klappt wirklich gut :lol: Danke dafür.
Gibt es noch eine Möglichkeit, dass ich den Dateinamen in "Speichern unter" vorschlage (z.B. Test.ini)?
mit

Code: Alles auswählen

  ini := TIniFile.Create(SaveDialog1.FileName+'test.ini'); 
wird test.ini angefügt aber ich will ja nichts anfügen, sondern den vollständigen Namen vorschlagen.
:oops: SORRY!!!

Antworten