Delphi-PRAXiS

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

Creepin 7. Mär 2007 17:28


Array speichern
 
Hallo, ich hoffe ich habe die richtige Rubrik getroffen. ich möchte ein Array in einer Datei speichern, das klappt auch ganz gut mit folgendem code:
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
 var i: integer;
key: array[1..26] of integer;
  f: TFileStream;
begin
 f := TFileStream.Create('C:\rotor.dat',fmCreate);
  try
   for i := 0 to 26 do
     f.write(key[i],sizeOf(integer));
 finally
   f.free;

  end;
end;
bloß wie kann ich den dateinamen und speicherort bestimmen lassen vom benutzer?
Danke im voraus für eure antworten.

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

stifflersmom 7. Mär 2007 17:31

Re: Array speichern
 
Stichwort
SaveFileDialog

Moin

FAlter 7. Mär 2007 17:56

Re: Array speichern
 
Hi,

1. Bitte verwende den delphi-Tag für Delphi-Source. Beispiel: aus

Code:
[delphi]while x do
  y;[/delphi]
wird

Delphi-Quellcode:
while x do
  y;
2. Der Delphi-Referenz durchsuchenSaveDialog (ohne File) oder Delphi-Referenz durchsuchenSavePictureDialog für Bilder, beide auf der Palettenseite Dialogs.

3. Da du ein statisches array hast, kannst du auch über

Delphi-Quellcode:
f.write(key, sizeof(key))
das komplette Array auf einmal schreiben. Bei eindimensionalen (packed) arrays, auch dynamischen, sowie Short/Ansi/WideStrings, wenn mann statt 0 eine 1 einsetzt, geht folgendes:

Delphi-Quellcode:
f.write(key[0], sizeof(key[0]))
Mfg
FAlter

//Edit: Willkommen :hi: in der DP! :hello:

Creepin 7. Mär 2007 20:22

Re: Array speichern
 
Danke für die Antworten, aber wo füge ich den savedialog ein in den code? Oder wie benutze ich den sonst?

Neutral General 7. Mär 2007 20:26

Re: Array speichern
 
Hi,

1. SaveDialog aufs Formular packen (Wie gesagt unter "Dialogs" gucken)
2.

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var i: integer;
    key: array[1..26] of integer;
    f: TFileStream;
begin
  if SaveDialog1.Execute then // öffnet den Dialog
  begin // wenn auf "OK" gedrückt wurde:
    f := TFileStream.Create(SaveDialog1.Filename,fmCreate);
    try
      for i := 0 to 26 do
        f.write(key[i],sizeOf(integer));
    finally
      f.free;
    end;
  end;
end;
Gruß
Neutral General

SirThornberry 7. Mär 2007 21:11

Re: Array speichern
 
Zitat:

Zitat von FAlter
das komplette Array auf einmal schreiben. Bei eindimensionalen (packed) arrays, auch dynamischen, sowie Short/Ansi/WideStrings, wenn mann statt 0 eine 1 einsetzt, geht folgendes:

Delphi-Quellcode:
f.write(key[0], sizeof(key[0]))

fast richtig, so wird nur das erste element geschrieben. Wenn dann so:
Delphi-Quellcode:
f.write(key[0], sizeof(key[0]) * Length(key))

Creepin 7. Mär 2007 21:50

Re: Array speichern
 
Danke funktioniert alles.

FAlter 8. Mär 2007 13:26

Re: Array speichern
 
Hi,

Zitat:

Zitat von SirThornberry
fast richtig, so wird nur das erste element geschrieben. Wenn dann so:
Delphi-Quellcode:
f.write(key[0], sizeof(key[0]) * Length(key))

Danke, daran hab ich gedacht, aber wohl leider vergessen zu schreiben.

Mfg
FAlter


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 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