AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 2 dimensionalen Array in Datei speichern und wieder laden
Thema durchsuchen
Ansicht
Themen-Optionen

2 dimensionalen Array in Datei speichern und wieder laden

Ein Thema von MisterNiceGuy · begonnen am 20. Mär 2005 · letzter Beitrag vom 30. Mär 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

2 dimensionalen Array in Datei speichern und wieder laden

  Alt 20. Mär 2005, 13:55
Hi, ich hab einen 2d-Array

f:array[1..12,1..2] of string; den ich in einer externen Datei speichern und wieder daraus laden möchte.

Kann mir jemand sagen wie ich das am besten anstelle?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 20. Mär 2005, 14:37
Delphi-Quellcode:
const
  IDENT_TMYARRAY = 'TMyArray';
  BUF_SIZE = 4096;
Delphi-Quellcode:
type
  TMyArray = array[1..12, 1..2] of String;
Delphi-Quellcode:
procedure SaveToFile(const MyArray: TMyArray; const FileName: String);
var
  Stream: TFileStream;
  Writer: TWriter;
  I, J: Integer;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    Writer := TWriter.Create(Stream, BUF_SIZE);
    try
      Writer.WriteSignature;
      Writer.WriteIdent(IDENT_TMYARRAY);
      for I := 1 to 12 do
        for J := 1 to 2 do
          Writer.WriteString(MyArray[I, J]);
    finally
      Writer.Free;
    end;
  finally
    Stream.Free;
  end;
end;
Delphi-Quellcode:
procedure LoadFromFile(var MyArray: TMyArray; const FileName: String);
var
  Stream: TFileStream;
  Reader: TReader;
  I, J: Integer;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead);
  try
    Reader := TReader.Create(Stream, BUF_SIZE);
    try
      Reader.ReadSignature;
      if Reader.ReadIdent <> IDENT_TMYARRAY then
        raise Exception.Create(FileName + ' ist keine gültige Datei vom Typ TMyArray.');
      for I := 1 to 12 do
        for J := 1 to 2 do
          MyArray[I, J] := Reader.ReadString;
    finally
      Reader.Free;
    end;
  finally
    Stream.Free;
  end;
end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#3

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 20. Mär 2005, 18:34
danke schön
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 27. Mär 2005, 20:23
Der Code funktioniert einwandfrei bei dateien die ich vorher mit SaveToFile erstellt habe.

Will ich jetzt aber, ich bin ja dumm, eine beliebige Datei mit LoadFromFile öffnen, passiert folgendes:
  • Reader.ReadSignature; Löst bei mir die Exception "Unbekannter Stream-Typ" aus!
    (Was macht ReadSignature eigentlich, bin aus der OH nicht schlau geworden?



  • Wenn ich nun die Anweisung weglasse, löst
    Reader.ReadIdent <> IDENT_TMYARRAY eine EReadError Exception aus.

    Wenn ich mit dem Debugger vorher Reader.ReadValue überprüfe gibt
    er mit rvint64, wo er mir doch eigentlich rvIdent liefern müsste!

Bitte um Hilfe!

Danke
Francis Obikwelu
greetz
mytar
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 28. Mär 2005, 11:45
ReadSignatur und ReadIdent prüfen, ob der Stream mit den gespeicherten Daten übereinstimmt. Damit nicht versehentlich falsche Daten geladen werden, die nicht zu deinem Array passen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
28. Mär 2005, 12:04
Dieses Thema wurde von "Christian Seehase" von "Windows API" nach "Sonstige Fragen zu Delphi" verschoben.
Hat nichts mit Windows-API zu tun
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#7

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 28. Mär 2005, 12:12
Die Exception dürfte zwecks des try-finally-blocks aber auch nur beim starten aus delphi raus passieren.
im kompilierten programm wird wohl keine kommen

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 28. Mär 2005, 16:32
@Airblader: Doch! In IDE und außerhalb!

Bei einer beliebigen Datei welche die Signatur und das Ident nicht enthält,
werden die oben genannten Exceptions ausgelöst,
was kann ich dagegen machen.

Ich möchte vor allem Spider bitten, sich das anzuschauen!

Danke!
Francis Obikwelu
greetz
mytar
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#9

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 28. Mär 2005, 18:53
Zitat von mytar:
Bei einer beliebigen Datei welche die Signatur und das Ident nicht enthält,
werden die oben genannten Exceptions ausgelöst,
was kann ich dagegen machen.
Zuerst solltest du den Aufbau der Daten analysieren und dir dann darüber gedanken machen wie man diese einlesen könnte. Als nächstes solltest du versuchen deine Ideen in Schlüsselwörter umzusetzen und die Suchmaschine deiner Wahl benutzen. Sollte die Suche aussichtslos sein oder/und die eigene Umsetzung nicht zustande kommen, dann poste hier doch mal den Aufbau der Datei.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
gekmihesg
(Gast)

n/a Beiträge
 
#10

Re: 2 dimensionalen Array in Datei speichern und wieder lade

  Alt 28. Mär 2005, 19:15
also das is vielleicht ein bischen einfacher:

Delphi-Quellcode:
type TMyArray = array[0..12,0..2] of integer;

procedure Save(Arr: TMyArray);
var
  f: file of TMyArray;
begin
  AssignFile(f, FILENAME);
  Rewrite(f);
  try
    Write(f,Arr);
  finally
    CloseFile(f);
  end;
end;

procedure Load(var Arr: TMyArray);
var
  f: file of TMyArray;
begin
  AssignFile(f, FILENAME);
  Reset(f);
  try
    Read(f,Arr);
  finally
    CloseFile(f);
  end;
end;
  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:35 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