AGB  ·  Datenschutz  ·  Impressum  







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

Dynam. Array Speichern,bzw. Laden

Ein Thema von Hallo_Thomas · begonnen am 10. Mär 2006 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 18:49
Hallo,
hatte mich schon ein bisschen belesen, was das Laden bzw,Speichern von Dynamischen Arrays angeht.
Nur Irgendwie will der Code nich klappen, abgespeichert wird irgendwas(keine Ahnnung was).

Und beim Laden ist hinterher nix in der Array;

Fehlermeldungen:nicht bekannt;


Die Dynamische Array;

Delphi-Quellcode:
public
     MyListe :Array of Byte;
So wollte ichs speichern
Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
var FS : TFileStream;
  i:Integer;
begin
  with SaveDialog1 do
  begin
    Filter := 'Textdateien (*.TXT)|*.TXT';
    FileName := 'Firmenbrief.txt';
    DefaultExt := 'TXT';
    Options := [ofOverwritePrompt]; // Sicherheitsabfrage beim Überschreiben
    if Execute then
    begin
      FS := TFileStream.Create(filename ,fmCreate);
      try
         for i := Low(MyListe) to High(MyListe) do
          fs.write(Myliste[i], Length(Myliste) * SizeOf(Integer));
        finally
       FS.free
        //for i := 0 to length(MyListe)-1 do
        //FS.Write (MyListe[i], length(MyListe) * sizeof(MyListe[i]));
        //finally
        //FS.free ;
      end ;
    end;
  end;
end ;
Und so wollte ich die daten wieder Laden
Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
var
  itag,y,Spalte,Grenze : Integer;
  FS : TFileStream;
begin
  with OpenDialog1 do
  begin
    Filter := 'Textdateien (*.TXT)|*.TXT';
    DefaultExt := 'TXT';
    if Execute then
    begin
      FS := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
      try
        FS.Read (MyListe[0], length(MyListe) * sizeof(Byte)) ;
      finally
      FS.free ;
      end ;
    end ;
 end;
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 18:52
Überdenke diese Zeile:
fs.write(Myliste[i], Length(Myliste) * SizeOf(Integer)); SizeOf(Byte) sollte reichen

Edit: Beim laden hast den gleichen Fehler
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 19:09
Zitat:
fs.write(Myliste[i], Length(Myliste) * SizeOf(Integer));
Jo war ein komischer Versuch

Aber trotzdem, wills irgendwie nich laufen?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 19:10
Überdenke auch mal dies:
FS.Read (MyListe[0] Oder wolltest du zum Testen nur das erste Item laden? Dann sollte es eigentlich korrekt sein, poste im Zweifelsfalle nochmal den korrigierten Code.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 19:27
@ Khabarakh


Ich hab da nichts gefunden wie ichs schreiben könnte, da ich ja beim Laden nicht weis wie gross die Array ist? Es wird ja nicht mal das erste Item zugeordnet
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 19:40
du müsstest dir möglichst noch im Stream die Länge des Arrays speichern, zumindest wenn du mal vor hast die mehr also nur ein Array of Byte zu verwenden.
Wenn es bei dem Array of Byte bleiben soll dann so:
Delphi-Quellcode:
//schreiben
Stream.Write(YourArray[0], Length(YourArray) * SizeOf(Byte));
//lesen
SetLength(YourArray, Stream.Size);
Stream.Read(YourArray[0], Length(YourArray) * SizeOf(Byte));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Grishnak
Grishnak

Registriert seit: 15. Sep 2005
Ort: Neu-Ulm
111 Beiträge
 
RAD-Studio 2009 Arc
 
#7

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 19:41
Du musst auf jeden Fall schon vor dem eigentlichen Laden per "FS.Read" wissen, wie groß das Array ist, da du es mittels "SetLength" einrichten musst!

Speichern:

Delphi-Quellcode:
len:=Length(MyListe);
FS.WriteBuffer(len, SizeOf(len));
for i:=0 to len-1 do
  FS.WriteBuffer(MyListe[i], SizeOf(Byte));
Laden:

Delphi-Quellcode:
FS.ReadBuffer(len, SizeOf(len));
SetLength(MyListe, len);
for i:=0 to len-1 do
  FS.ReadBuffer(MyListe[i], SizeOf(Byte));
!!!ungetestet!!!
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 19:56
Oder probier das mal, ebenfalls ungetestet:
Delphi-Quellcode:
SetLength(MyListe,0);
while not eof(fs) do
 begin
 SetLength(MyListe,Length(MyListe)+1);
 fs.read(MyListe[Pred(Length(MyListe))],SizeOf(Byte));
 end;
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 20:30
@ SirThornberry
Leider scheitere ich hier schon beim speicher.

Fehlermeldung:Zugriffsverletzung.........


Stream.Write(MyListe[0], Length(MyListe) * SizeOf(Byte));
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Dynam. Array Speichern,bzw. Laden

  Alt 10. Mär 2006, 20:40
So bevor ich weitermache, stelle ich hier mal einen Beispielcode herein

In der Unit1 zum Schluss sind die beiden Proceduren, die mir Kopfschmerzen machen.
Angehängte Dateien
Dateityp: rar liste_134.rar (18,6 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:39 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