Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi speichern von var (https://www.delphipraxis.net/66085-speichern-von-var.html)

Flare 24. Mär 2006 15:09

Re: speichern von var
 
Ich hab im Quellcode "speichern" angesprochen, damit meinte ich aber eigentlich die Benutzung von Variablen.


Flare

Hador 24. Mär 2006 15:12

Re: speichern von var
 
Du könntest dass ganze auch folgendermaßen machen.
Das ist - finde ich - bei wenigen Daten noch einfacher:

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

var
  F: TextFile;
  var1, var2: string;
  var3, var4: Integer;

begin
  //Variablen initialisieren

  var1 := 'bla';
  var2 := 'blubb';
  var3 := 42;
  var4 := 0;

  //Datei öffnen und die Daten Zeile für Zeile abspeichern

  AssignFile(F, 'DATEINAME');
  Rewrite(F);
  Writeln(F, var1);
  Writeln(F, var2);
  Writeln(F, var3);
  Writeln(F, var4);
  CloseFile(F);

  //Variablen "leeren"

  var1 := '';
  var2 := '';
  var3 := -1;
  var4 := -1;

  //Datei öffnen und die Daten Zeile für Zeile auslesen

  AssignFile(F, 'DATEINAME');
  Reset(F);
  Readln(F, var1);
  Readln(F, var2);
  Readln(F, var3);
  Readln(F, var4);
  CloseFile(F);

  //Variablen in Konsole ausgeben

  Writeln(var1);
  Writeln(var2);
  Writeln(var3);
  Writeln(var4);

  Readln;
end.
Das ist mal 'n komplettes Beispielprogramm.

Flare 24. Mär 2006 15:17

Re: speichern von var
 
@Hador

Warum stellst du hier Pascal-Code rein wenn es um Win32 Delphi geht?


Flare

Hador 24. Mär 2006 15:21

Re: speichern von var
 
:shock: :shock: :shock:
Das IST Object Pascal (Delphi Win32) Code

Zitat:

Zitat von Flare
Ich habe jetzt aber nicht Lust dir zu erklären wie man Vaiablen benutzt...

Und ich keine Lust dir zu erklären, warum das so ist

Sharky 24. Mär 2006 17:29

Re: speichern von var
 
Und ich bitte euch beim Thema zu bleiben und alles andere via PM zu klären.
Danke.

Frodo_Beutlin 24. Mär 2006 20:49

Re: speichern von var
 
danke für die hilfe und die links zum toturial.. ich habe sie mir durchgelesen und es ausprobiert...
das speichern hat funktioniert aber wenn ich die variablen dann wieder aufrufen will, funktioniert es nicht...sie bekommmen dann alle 0 zugewiesen ?!?!?


ich hoffe ihr könnt ihr mir erneut helfen :)

Delphi-Quellcode:
unit umfrage;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IniFiles;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    choosedrg: TRadioGroup;
    votebtm: TButton;
    procedure votebtmClick(Sender: TObject);
    procedure FormShow(sende:TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  a,b,c,d,e,f,ap,bp,cp,dp,ep,fp,x:double;
  ini: TIniFile;

implementation

{$R *.dfm}


procedure TForm1.FormShow(sende:TObject);
begin
  ini:=TIniFile.create('ergebnis.ini');
  try
    a:=ini.ReadFloat('frage1','wert1',0);
    b:=ini.ReadFloat('frage1','wert2',0);
    c:=ini.ReadFloat('frage1','wert3',0);
    d:=ini.ReadFloat('frage1','wert4',0);
    e:=ini.ReadFloat('frage1','wert5',0);
    f:=ini.ReadFloat('frage1','wert6',0);
  finally
    ini.Free;
  end;
end;

procedure TForm1.votebtmClick(Sender: TObject);
begin
  case choosedrg.ItemIndex of
      0:a:=a+1;
      1:b:=b+1;
      2:c:=c+1;
      3:d:=d+1;
      4:e:=e+1;
      5:f:=f+1;
  end;
  x:=a+b+c+d+e+f;
  ap:=a*100/x;
  bp:=b*100/x;
  cp:=c*100/x;
  dp:=d*100/x;
  ep:=e*100/x;
  fp:=f*100/x;
  ini:=TIniFile.Create((ParamStr(0))+'ergebnis.ini');
  ini.WriteFloat('frage1', 'wert1', a);
  ini.WriteFloat('frage1', 'wert2', b);
  ini.WriteFloat('frage1', 'wert3', c);
  ini.WriteFloat('frage1', 'wert4', d);
  ini.WriteFloat('frage1', 'wert5', e);
  ini.WriteFloat('frage1', 'wert6', f);
  ini.free;
end;

end.

lg tom

Brüggendiek 24. Mär 2006 21:39

Re: speichern von var
 
Hallo Tom!

Schau Dir doch mal Deinen Code genau an:
Delphi-Quellcode:
procedure TForm1.FormShow(sende:TObject);
begin
  ini:=TIniFile.create('ergebnis.ini');
end;

procedure TForm1.votebtmClick(Sender: TObject);
  ini:=TIniFile.Create((ParamStr(0))+'ergebnis.ini');
end;
Siehst Du den Unterschied? Bei ersten Mal wird die Datei im aktuellen Verzeichnis gesucht (das nicht unbedingt das Programmverzeichnis sein muß, ein reines Glücksspiel!), im zweiten Fall im Programmverzeichnis. Obendrein hast Du vergessen, den Programmnamen rauszunehmen, der Ini-Name ist also "programmverzeichnis\programm.exeergebnis.ini" - kein Wunder, daß die Werte leer sind.

Schreibe in beiden Fällen:
Delphi-Quellcode:
ini:=TIniFile.Create(ExtractFilePath (ParamStr(0))+'ergebnis.ini');
Außerdem ist es unnötig, die Variable "ini" global zu deklarieren. Deklariere sie jeweils in den Methoden, in denen sie benutzt wird.

Desweiteren: beim ersten Teil hast Du einen Ressourcenschutzblock drin, beim zweiten mal nicht!
Da frage ich mich natürlich, wo Du Deinen Code zusammengesucht hast und ob Du überhaupt verstehst, was Du da geschrieben hast - man sollte nicht kopieren, sondern kapieren!

Dietmar Brüggendiek
Edit: hupps - da fehlte ja ExtractFilePath!

Frodo_Beutlin 26. Mär 2006 16:55

Re: speichern von var
 
jetzt habe ich das geändert jedoch funktioniert es immer noch nicht :?

Delphi-Quellcode:
unit umfrage;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IniFiles;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    choosedrg: TRadioGroup;
    votebtm: TButton;
    procedure votebtmClick(Sender: TObject);
    procedure FormShow(sende:TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  a,b,c,d,e,f,ap,bp,cp,dp,ep,fp,x:double;
  ini: TIniFile;

implementation

{$R *.dfm}


procedure TForm1.FormShow(sende:TObject);
begin
  ini:=TIniFile.create(ExtractFilePath (ParamStr(0))+'D:\Office\Delphi\Umfragen\umfragepr.exeergebnis.ini');
  try
    a:=ini.ReadFloat('frage1','wert1',0);
    b:=ini.ReadFloat('frage1','wert2',0);
    c:=ini.ReadFloat('frage1','wert3',0);
    d:=ini.ReadFloat('frage1','wert4',0);
    e:=ini.ReadFloat('frage1','wert5',0);
    f:=ini.ReadFloat('frage1','wert6',0);
  finally
    ini.Free;
  end;
end;

procedure TForm1.votebtmClick(Sender: TObject);
begin
  case choosedrg.ItemIndex of
      0:a:=a+1;
      1:b:=b+1;
      2:c:=c+1;
      3:d:=d+1;
      4:e:=e+1;
      5:f:=f+1;
  end;
  x:=a+b+c+d+e+f;
  ap:=a*100/x;
  bp:=b*100/x;
  cp:=c*100/x;
  dp:=d*100/x;
  ep:=e*100/x;
  fp:=f*100/x;
  ini:=TIniFile.create(ExtractFilePath (ParamStr(0))+'ergebnis.ini');
  ini.WriteFloat('frage1', 'wert1', a);
  ini.WriteFloat('frage1', 'wert2', b);
  ini.WriteFloat('frage1', 'wert3', c);
  ini.WriteFloat('frage1', 'wert4', d);
  ini.WriteFloat('frage1', 'wert5', e);
  ini.WriteFloat('frage1', 'wert6', f);
  ini.free;
end;

end.
tg tom

Frodo_Beutlin 26. Mär 2006 18:33

Re: speichern von var
 
kann mir bitte jemand helfen?!?!?!?!?!

Waldteufel 26. Mär 2006 18:49

Re: speichern von var
 
Sag mal, verstehst du überhaupt, was du da schreibst? :wall: :wall: :wall:

Delphi-Quellcode:
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'D:\Office\Delphi\Umfragen\umfragepr.exeergebnis.ini');
Wenn die aktuelle Anwendung D:\Office\Delphi\Umfragen\umfragepr.exe heißt, dann kommt da hinten D:\Office\Delphi\Umfragen\D:\Office\Delphi\Umfrage n\umfragepr.exeergebnis.ini raus.

Und bevor ich jetz noch nen Herzinfarkt bekomme:
Delphi-Quellcode:
ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'ergebnis.ini');
So müssen beide Zeilen lauten (sowohl 35 als auch 65).

Außerdem darf man erst nach 24 Stunden pushen. :warn:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz