AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

savedialog/opendialog

Ein Thema von marcelwhip · begonnen am 17. Aug 2005 · letzter Beitrag vom 20. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23      
marcelwhip

Registriert seit: 5. Aug 2005
Ort: Berlin
38 Beiträge
 
Delphi 7 Personal
 
#1

savedialog/opendialog

  Alt 17. Aug 2005, 15:19
Hallo!
ICh habe ein Address buch geschreieben!, Nun weiß ich nciht wie ich es schaffe, die Daten in eine Datei zu exportieren, und nachher wieder zu öffnen.
die Daten sind in einem: eintrag:Array 1..100] of Tdaten; (Tdaten ist ein record!!!);

ICh weiß das man den "opendialog" und "savedialog" benutzten muss, aber nicht genau wie!

Schoneinmal danke für ihre Bemühungen!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#2

Re: savedialog/opendialog

  Alt 17. Aug 2005, 15:33
Wenn ich mich nicht irre, dann ist in der OH eine Demo dazu (vermutlich unter TOpenDialog/TSaveDialog, oder so)

Du brauchst dazu nur die entsprechende Komponenten auf dein Form ziehen
und (ich glaube) mit Execute den gewünschten Dialog aufrufen.

Delphi-Quellcode:
If OpenDialog1.Execute Then Begin
  // Daten aus der Datei mit dem Namen in OpenDialog1.Filename auslesen
End;
Falls du noch eine bestimmte Dateiendung, oder andere Wünsche hast,
dann kanst du dieses direkt im OI einstellen oder vorher noch in OpenDialog.xyz verändern.


[add]
wenn in dem Array keine Pointer (z.B. lange Strings) vorhanden sind, dann kanst du die Daten z.B. so Speichern.

Delphi-Quellcode:
Var A: Array[1..100] of TDaten;
  F: File;

AssignFile(F, SaveDialog1.FileName);
Rewrite(F);
WriteBlock(F, @A, 100 * SizeOf(TDaten));
Close(F)
Delphi-Quellcode:
Var A: Array[1..100] of TDaten;
  F: File of TDaten;

AssignFile(F, SaveDialog1.FileName);
Rewrite(F);
For i := 1 to 100 do Write(F, A[i]);
Close(F);
[add2]
ichbins hat wohl schneller geschrieben, als ich editiert hab :cy:
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: savedialog/opendialog

  Alt 17. Aug 2005, 15:34
Open- und Savediaolg sind nur Dialoge - wie der Name schon sagt. Du kannst hier nur Dateien und Ordner auswählen, die du Öffnen, bzw. Speichern willst. Um das Speichern/Laden als solches mußt du dich dann schon selber kümmern.
Zitat von marcelwhip:
ICh weiß das man den "opendialog" und "savedialog" benutzten muss, aber nicht genau wie!
Wie kommst du darauf, daß du musst? Du kannst es auch gerade so machen, wie du möchtest. Von mir aus muß der User den Dateinamen per Hand angeben, das bleibt völlig dir überlassen.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#4

Re: savedialog/opendialog

  Alt 17. Aug 2005, 15:39
Delphi-Quellcode:
//Speichern:
var
  f:file of tdaten;
begin
  if not savedialog1.execute then exit;
  assignfile(f,savedialog1.filename);
  rewrite(f);
  for i:=1 to 100 do
    write(f,eintrag[i]);
  closefile(f);
end;

//Laden:
var
  f:file of tdaten;
begin
  if not opendialog1.execute then exit;
  assignfile(f,opendialog1.filename);
  filemode:=0;
  reset(f);
  for i:=1 to 100 do
    read(f,eintrag[i]);
  closefile(f);
end;
Daten darf keine Strings enthalten. Falls Strings enthalten sind, ersetzte sie durch
Array[0..255] of char Du kannst genauso darauf zugreifen.
Michael Enßlin
  Mit Zitat antworten Zitat
marcelwhip

Registriert seit: 5. Aug 2005
Ort: Berlin
38 Beiträge
 
Delphi 7 Personal
 
#5

Re: savedialog/opendialog

  Alt 17. Aug 2005, 15:51
aha, also man muss nen file nehmen, allerdings wie kann ich dann vom 1. zum 2. datensatz blättern?
beim array macht man edit1.text:=array[1+1].xxx, wei geht das denn bei daten?
achso, char ist doch aber nur ein buchstabe oder?

Delphi-Quellcode:
type
  TDaten = record
    vorname, Name, nummer, handyn, ort:string[15];
    strasse, email:string[20];
    plz, hnummer:string[5];
  end;
var
  ake:integer; //Aktueller Eintrag//
  anze:integer; //Anzahl Einträge//
  schongespeichert:boolean;
  eintrag: array1..300] of Tdaten;

procedure TForm1.Button3Click(Sender: TObject); //ein eintrag vor
  begin
    if anze=ake then
      begin
        showmessage('Du zeigst bereits den lezten Eintrag an!');
        exit;
      end
    else
      begin
        evorname.text:=eintrag[ake+1].vorname;
        ename.text:=eintrag[ake+1].name;
        enummer.text:=eintrag[ake+1].nummer;
        ehandy.Text:=eintrag[ake+1].handyn;
        eHnummer.Text:=eintrag[ake+1].hnummer;
        eort.text:=eintrag[ake+1].ort;
        eplz.Text:=eintrag[ake+1].PLZ;
        estrasse.text:=eintrag[ake+1].strasse;
        email.Text:=eintrag[ake+1].email;
        ake:=ake+1;
      end;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#6

Re: savedialog/opendialog

  Alt 17. Aug 2005, 16:02
Zitat von marcelwhip:
aha, also man muss nen file nehmen, allerdings wie kann ich dann vom 1. zum 2. datensatz blättern?
beim array macht man edit1.text:=array[1+1].xxx, wei geht das denn bei daten?
du kannst ja deine daten weiterhin im speicher als array of record verhenden/verwalten ... das "file" bentuzt du dann nur zum laden/speichern.
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#7

Re: savedialog/opendialog

  Alt 17. Aug 2005, 16:05
Char ist nur EIN Buchstabe, aber ein Array of Char nicht

Du kannst aber auch String[100] für einen String mit maximal 100 Zeichen, oder auch Array[1..100] of Char verwenden.
Beides kannst du natürlich (dank dem inteligenten Compiler) wie einen normalen String/AnsiString verwenden.

Aber du hast ja schon eine passnde StringVariante verwendet, also gibt es da keine Probleme.

wenn du den 1. Record in eintrag[1] eingelesen hast, dann springt der FilePojnter automatisch zum nächsten Record, welcher dann natürlich in eintrag[2] reinwandert ... und das geht dann so weiter, bis zum letzten Record ...




PS: da du ja ein statisches Array verwendest, kannst du pracktischer Weise das gesammte Array auf einmal Speichern/Laden.
Delphi-Quellcode:
AssignFile(F, ...);
Rewrite(F);
BlockWrite(F, @eintrag, 300 * SizeOf(TDaten));
Close(F);

AssignFile(F, ...);
Reset(F);
BlockRead(F, @eintrag, 300 * SizeOf(TDaten));
Close(F);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
marcelwhip

Registriert seit: 5. Aug 2005
Ort: Berlin
38 Beiträge
 
Delphi 7 Personal
 
#8

Re: savedialog/opendialog

  Alt 17. Aug 2005, 16:24
so das sieht jetzt so bei mir aus:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject); ///laden
  begin
    AssignFile(F, opendialog1.filename);
    Reset(F);
    BlockRead(F, @eintrag, 300 * SizeOf(TDaten));
    Close(F);
    opendialog1.execute;
  end;

procedure TForm1.Button7Click(Sender: TObject); //speichern
var I:Integer; //zählvariable
  begin
      AssignFile(F, savedialog1.filename);
      Rewrite(F);
      BlockWrite(F, @eintrag, 300 * SizeOf(TDaten));
      Close(F);
      schongespeichert:=true;
  end;
dann kommt immer so ne fehler meldung:"konstantausdruck kann nicht als varparameter weitergegeben werden."

achso, wenns was zur sache tut: meine datei soll dann meineDaten.mod heißrn, das hab ich schon bei beiden in som filter und so eingetragen.

Mit dem Programm hab ich mich wahrscheinlihc übernommen !!
zum glück gibts ja euch!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#9

Re: savedialog/opendialog

  Alt 17. Aug 2005, 16:32
An welcher Stelle kommt den der Fehler?

Und opendialog1.execute muß vor dem Laden der Daten ausgeführt werden
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#10

Re: savedialog/opendialog

  Alt 17. Aug 2005, 16:33
Zitat von marcelwhip:
zum glück gibts ja euch!!


hab dein Code nur mal so schnell überflogen (bald Feierabend ^^)
und erstmal gesehen, daß zu speicherst, BEVOR du mit Opendialog1.execute eine Datei auswählst ... (siehe kommentare im code) und beim speicher führst du den Savedialog garnicht aus ...

Zitat von marcelwhip:
so das sieht jetzt so bei mir aus:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject); ///laden
  begin
    AssignFile(F, opendialog1.filename); //<---- Filename wird benutzt
    Reset(F);
    BlockRead(F, @eintrag, 300 * SizeOf(TDaten));
    Close(F);
    opendialog1.execute; //<---- aber erst da eine datei ausgewählt
  end;

procedure TForm1.Button7Click(Sender: TObject); //speichern
var I:Integer; //zählvariable
  begin
      AssignFile(F, savedialog1.filename); //<-- Savedialog.filename aber kein Savedialog.exeCute davor
      Rewrite(F);
      BlockWrite(F, @eintrag, 300 * SizeOf(TDaten));
      Close(F);
      schongespeichert:=true;
  end;
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 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