AGB  ·  Datenschutz  ·  Impressum  







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

verschiedene Datentypen speichern ?

Offene Frage von "Urba"
Ein Thema von Urba · begonnen am 1. Nov 2004 · letzter Beitrag vom 1. Nov 2004
Antwort Antwort
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#1

verschiedene Datentypen speichern ?

  Alt 1. Nov 2004, 01:40
Hallo Leute,

Ich habe in meinem Programm mehrere Arrays welche wiederum verschiedene Datentypen beinhalten. Diese Daten sollen gespeichert werden. Nun habe ich das bisher mit normalen Textfiles gemacht und das klappt auch recht gut, allerding sind sie doch etwas sehr schnell sehr groß. Dieses Problem würde ich gerne umgehen indem ich eine andere Speichermethode schreibe.

ich will also direkt die Bytes in die Datei schreiben. Wie das geht weiß ich schon, mein Problem liegt an der Umwandlung der verschiedenen Datentypen. Wenn ich einen Datentyp "Byte" habe stellt das ja nicht allzu große Probleme dar aber bei Typen wie Integer oder sogar Int64 und Fließkommazahlen vom Typ Single oder Double. Wie wandle ich diese Zahlentypen am besten um damit ich sie schön speichern kann ?

Wenn jemand einen besseren Vorschlag hat wie ich mein Problem (allgemein das mit dem Speichern) lösen kann dann nichts wie raus damit - bin für alles offen.

Also schonmal vielen Dank

Gruss
Urba
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: verschiedene Datentypen speichern ?

  Alt 1. Nov 2004, 02:07
Zitat von Urba:
Ich habe in meinem Programm mehrere Arrays welche wiederum verschiedene Datentypen beinhalten.
Wie darf ich mir das vorstellen? Zeig mal die Deklaration.

Typisierte Dateien (Records) kann man bequem mit einen Stream wegspeichern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#3

Re: verschiedene Datentypen speichern ?

  Alt 1. Nov 2004, 02:20
Hallo,

Ungefähr so ...

Delphi-Quellcode:
type
  TBsp = class
    a : String;
    b : Byte;
    c : Int64
    d : Word;
    e : Single;
  end;

  var
    a : array [1..10000] of TBsp;
Hoffe das hilft beim Verständnis...

Gruss
Urba
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: verschiedene Datentypen speichern ?

  Alt 1. Nov 2004, 05:54
Hai Urba,

wie Luckie schon vorgeschlagen hat würde ich das mit einem Stream lösen. Das könnte dann z.B. So aussehen:

Delphi-Quellcode:
type
  TBsp = Packed Record
    a : String[255]; // Sonst geht es Imho nicht
    b : Byte;
    c : Int64;
    d : Word;
    e : Single;
  end;

var
  a : array [1..10000] of TBsp;

// Alle Daten aus dem Array in eine Datei speichern.
procedure TForm1.Button1Click(Sender: TObject);
var
  ndx : Integer;
  stream : TMemoryStream;
begin
  stream := TMemoryStream.Create;
  try
    for ndx := Low(a) to High(a) do // Alle Records im Array durchlaufen
    begin
      stream.Write(a[ndx],Sizeof(TBsp)); // Jeden Record in den Stream kopieren
    end;
    stream.SaveToFile('c:\meinedaten.dat'); // Stream speichern
  finally
    stream.Free;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Urba

Registriert seit: 8. Dez 2002
Ort: Ketsch
120 Beiträge
 
Delphi 6 Personal
 
#5

Re: verschiedene Datentypen speichern ?

  Alt 1. Nov 2004, 15:23
Hallo Leute,

Danke für den Hinweis aber ich glaube den kann ich nicht komplett ausnutzen, weil es sich bei mir ja um Klassen handelt und nicht um Records. Bei einigen tausend Arrayeinträgen fällt es schon etwas ins Gewicht ob der Eintrag im Array "nil" (class) ist oder ob die Daten mit dem Minimalwert eingetragen sind (record). Ausserdem prüfe ich mittlerweile in allen Funktionen die auf die verschiedenen Arrays zugreifen a[xy] = nil als Schlussabfrage. Dies müsste ich aber ALLES wieder umschreiben.

Gäbe es da nicht eine andere Lösung ?

Gruss
Urba
Es gibt keine blöden Fragen, nur blöde Antworten
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:05 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