Delphi-PRAXiS

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

MasterTobi 10. Aug 2007 14:23


speichern von daten
 
hey
ich habe jetzt angenommen 10 tedit komponenten, in dennen was steht beim neustart des programmes is ja alles weg!

nun möchte ich ein tsavedialog hinzufügen, der mir dann die werte speichert un wenn ich das programm neustarte wieder mit topendialog wieder herstelle!
hoffe das versteht jemand

geht das irgendwie?


ich hab es so probiert
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin


    SaveDialog1.InitialDir := ExtractFilepath(SaveDialog1.FileName);
  end;
end;
end.


mfg
tobi

SirThornberry 10. Aug 2007 14:29

Re: speichern von daten
 
Der Dialog ist nur ein Dialog der dir das auswählen einer Datei ermöglicht. Das Speichern musst du selbst machen (mit inifiles, streams, stringlists etc.)

MasterTobi 10. Aug 2007 14:32

Re: speichern von daten
 
:wiejetzt:

ehm ich bin noch net so lang dabei :(

kannst du mir irgendwie ein bsp geben?

quendolineDD 10. Aug 2007 14:50

Re: speichern von daten
 
Du kannst dir eine Strinlist erstellen, in diese deine 10 Inhalte der Datei laden und dann mit einer Schleife die 10 Daten aus der Stringlist auf die TEdit's verteilen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var open : TOpenDialog;
    values: TStringlist;
    i : integer;

begin
open := TOpenDialog.Create(self);
if open.execute then begin
        values := TStringList.Create;
        values.loadfromfile(open.filename);

for i := 0 to values.Count -1 do
    memo1.lines[i] := values.Strings[i];
end;
open.Destroy; values.Free;
end;
Solang du deinen absoluten Pfad hast, der sich auch wirklich nicht verändern wird, kannst du den teil mit "if open.execute then begin" weglassen und anstatt open.filename den absoluten Pfad eingeben in den Quelltext.
Desweiteren müsstest du dann nicht den Opendialog initialisieren bzw. zerstören.

Ich wusst jetzt nicht, wie man das Dynamisch auch die Zählvariable i für die Edit's nehmen kann. Hab in letzter Zeit zu viel mit PHP und Javascript gearbeitet :-\

MasterTobi 10. Aug 2007 14:58

Re: speichern von daten
 
ok das war aber öffen
ich hab es als speichern unmegschrieben aber dann sagt er könnte datei nicht erstellen hmm

Svenkan 13. Aug 2007 18:40

Re: speichern von daten
 
Hier ein einfacher Save-Dialog:

Delphi-Quellcode:
procedure TForm1.SaveClick(Sender: TObject);
begin
 if SaveDialog1.Execute then
   Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;

MasterTobi 15. Aug 2007 09:58

Re: speichern von daten
 
ich verstehe nicht warum memo1.lines ?!
ich hab doch gar kein memo feld ?!?

mfg
tobi

shmia 15. Aug 2007 10:09

Re: speichern von daten
 
Es gibt auch (Fremd-)Komponenten (z.B. TFormStorage), die man aufs Formular setzt und die ganze Arbeit des Ladens und Speichern im Hintergrund durchführen.
Man kann so entweder in eine INI-Datei oder in die Registry speichern.
Man kann auswählen, welche Properties von welchen Komponenten man sichern möchte.
Das Formular behält so immer die Einstellungen, die es beim Programmende bzw. Freigeben des Formulars hatte. Es gibt aber nur eine Konfiguration.
Wär' das was für dich ?

MasterTobi 15. Aug 2007 10:18

Re: speichern von daten
 
klingt gut ich werd ma schauen ob ich es hinbekomme

thx @ all

mfg
tobi

MasterTobi 15. Aug 2007 10:20

Re: speichern von daten
 
Zitat:

Es gibt auch (Fremd-)Komponenten (z.B. TFormStorage)

diese komponente habe ich nicht?!

mfg tobi

DeddyH 15. Aug 2007 10:25

Re: speichern von daten
 
Zitat:

Zitat von MasterTobi
diese komponente habe ich nicht?!

Deshalb steht da ja auch (Fremd-)Komponenten. Schau doch mal bei Torry und Konsorten nach (AFAIK ist so etwas auch bei den Jedis dabei).

MasterTobi 16. Aug 2007 09:47

Re: speichern von daten
 
irgendwie finde ich die komponente nicht ?!?

DeddyH 16. Aug 2007 11:03

Re: speichern von daten
 
Wenn Du die JVCL installiert hast, schau mal in der Komponentenpalette unter "Jv Persistence".

MasterTobi 16. Aug 2007 11:08

Re: speichern von daten
 
irgendwie raff ich des net zu installiern

ich hatte ma die indy komponenten installiert da ging das irgendwie einfacher.

kannst du mir erklären wie das funzt?
ich hab mir die "JVCL332CompleteJCL1100-Build2646" runtergeladen.

mfg
Tobi

DeddyH 16. Aug 2007 11:13

Re: speichern von daten
 
Entpacke das Archiv, wechsle erst in den Ordner "JCL" und führe die "install.bat" aus, anschließend dasselbe noch einmal im Ordner "JVCL".

MasterTobi 16. Aug 2007 11:23

Re: speichern von daten
 
also das jcl installiert er aber bei jvcl bringt er die fehlermeldung

[Compiling installer...]
Der Befehl "..\..\packages\bin\dcc32ex.exe" ist entweder falsch geschrieben oder

konnte nicht gefunden werden.

Failed to compile JVCL installer

was denn da los?

mfg
tobi

mkinzler 16. Aug 2007 11:27

Re: speichern von daten
 
Hast du ne PE?

MasterTobi 16. Aug 2007 11:29

Re: speichern von daten
 
ehm ja die 2005 pe

mkinzler 16. Aug 2007 11:32

Re: speichern von daten
 
dann musst du die Installation manuell durchführen, da die PEs keine Kommandozeilenversion des Compilers (dcc32.exe) mitbringen.

MasterTobi 16. Aug 2007 11:35

Re: speichern von daten
 
das hab ich mir fast gedacht, bei den indy komponenten ging es einfach nur hier bei denen raf ich net wie ich se installieren soll?!

Luckie 16. Aug 2007 11:36

Re: speichern von daten
 
Bevor man für so etwas einfaches eine Fremdkomponente nimmt, würde ich das aber selber programmieren. Zu mal MasterTobi noch ein Anfänegr zu sein scheint und er beim Selbermachen auch mal etwas lernen würde anstatt imme rnur Komponenten aufs Formular zu klatschen und fertig ist das Programm.

Desweiteren gibt es hier schon genug Threads, wie man die JCL und die JVCL installiert. Diese Fragen gehören definitiv nicht hier in diesen Thread.

mkinzler 16. Aug 2007 11:36

Re: speichern von daten
 
Öffne die zur Delphi-Version passende Package-Gruppe in der IDE und lasse diese erstellen.

MasterTobi 16. Aug 2007 11:43

Re: speichern von daten
 
@ luckie

es hieß ma man könnte die komponente tinifile nehmen?! aber diese hab ich auch nicht. wie soll man es den selber schreiben ich raf des einfach net.

mkinzler 16. Aug 2007 11:45

Re: speichern von daten
 
TIniFiel gehört zum Standard.
hast du IniFiles in die uses aufgenommen?

MasterTobi 16. Aug 2007 11:54

Re: speichern von daten
 
wenn ich
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, tinifiel;
ist tinifiel oder tinifiles
rot unterstrichen

DeddyH 16. Aug 2007 11:55

Re: speichern von daten
 
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IniFiles;

MasterTobi 16. Aug 2007 11:58

Re: speichern von daten
 
oh ok das funzt *g*

so un jetzt muss ich doch noch die komponente reinmachen oder, weil die hab ich nicht?!
oder muss ich eine *.ini reinmachen?!

DeddyH 16. Aug 2007 12:00

Re: speichern von daten
 
Du musst eine TIniFile verwenden, das ist eine Klasse, keine Komponente.

MasterTobi 16. Aug 2007 12:07

Re: speichern von daten
 
eine "klasse" ist doch eine ganz normale unit oder?

mkinzler 16. Aug 2007 12:09

Re: speichern von daten
 
Nein eine Klasse ist eine Klasse ( ein Typ in der OOP).

DeddyH 16. Aug 2007 12:10

Re: speichern von daten
 
Ein Apfel ist keine Birne. Die zu verwendende Klasse heißt TIniFile, die Unit, in der sie enthalten ist, heißt IniFiles.

MasterTobi 16. Aug 2007 12:12

Re: speichern von daten
 
ich finde werder tinifile noch inifiles?!

ey ich habs heut wida xD

DeddyH 16. Aug 2007 12:15

Re: speichern von daten
 
Du hast doch IniFiles bereits eingebunden, oder hab ich den Post #27 falsch verstanden?

MasterTobi 16. Aug 2007 12:17

Re: speichern von daten
 
ja hab ich

so un nu muss ich ja dem prog irgendwie sagen mit write zum speichern un read zum lesen das er es in eine *.ini speichern soll bzw aus der wida laden soll oder, dazu brauch ich doch eine ini die an das programm gekoppelt ist oder?

oder erstellt er sie dann selbst wenn ich zb auf button1 klicke?

DeddyH 16. Aug 2007 12:19

Re: speichern von daten
 
Nein, von selbst wird nichts erstellt, das musst Du selbst erledigen. Dafür kannst Du die Klasse TIniFile verwenden. Ich weiß ja nicht, welches Delphi Du benutzt, aber Du kannst ja mal in der Hilfe unter TIniFile nachsehen.

MasterTobi 16. Aug 2007 12:21

Re: speichern von daten
 
ich benutze delphi 2005 pe

ok ich werd ma schauen

MasterTobi 17. Aug 2007 18:23

Re: speichern von daten
 
So ich mach es doch nicht in der ini file

ich mache es so

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
 var zeile1, zeile2, zeile3: string;
      pu: Tstringlist;
begin
  zeile1 := edit1.text;
  zeile2 := edit2.text;
  zeile3 := edit3.text;
  pu := Tstringlist.Create;
  try
    pu.Add(Zeile1);
    pu.Add(Zeile2);
    pu.Add(Zeile3);

    with savedialog1 do if execute then
      pu.SaveToFile(filename);
  finally pu.free End;
end;

procedure TForm1.Button2Click(Sender: TObject);

  var zeile1, zeile2, zeile3: string;
      pu: Tstringlist;
begin
  pu := Tstringlist.Create;
  with opendialog1 do if execute then
      pu.LoadfromFile(filename);
  try
    if pu.count > 0 then Zeile1 := pu[0] else zeile1 := 'Fehlanzeige';
    if pu.count > 1 then Zeile2 := pu[1] else zeile2 := 'Fehlanzeige';
    if pu.count > 2 then zeile3 := pu[2] else zeile3 := 'Fehlanzeige';
    edit1.text := zeile1;
    edit2.text := zeile2;
    edit3.text := zeile3;
  finally pu.free End;
end;
end.

Trozdem Thx @ all

MFG
Tobi


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.

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