AGB  ·  Datenschutz  ·  Impressum  







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

speicherproblem

Ein Thema von donmarkus · begonnen am 21. Dez 2006 · letzter Beitrag vom 22. Dez 2006
Antwort Antwort
donmarkus

Registriert seit: 21. Dez 2006
14 Beiträge
 
#1

speicherproblem

  Alt 21. Dez 2006, 17:43
also,
bin neu(3-4 monate) im delphi coden und habe mal ne frage.
also ich möchte ein komplettes array in eine .txt datei laden und später wieder komplett auslesen. es handelt sich um ein 2d arrey. ich weiß mit einer datenbank wäre es besser aber damit kenne ich mich überhaupt nicht aus! außerdem ist es für den user besser, wenn er die strings aus einer txt datei lesen kann.

mit readfromfile,savetofile habe ich es schon verscuht.... aber nicht so hinbekommen wie es sein soll.

danke!
mfg donmarkus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: speicherproblem

  Alt 21. Dez 2006, 17:54
Sollte es nicht so gehen?

Delphi-Quellcode:
type
  MyArray = array[1..10,1..10] of String[255]; // ein Type erstellen

var
  MyFile: File of MyArray // ein File mit dieser Typenstruktur
  dataSet : MyArray; // ein DatenSatz

begin
  Assign(MyFile,'MyArrayFile.dat'); // dem logischen File eine "physikalische" Datei zurordnen.
  Rewrite(MyFile); // die Datei wird erstellt, sollte es schon eine mit diesem Namen geben
                                     // wird sie überschrieben
  dataSet[1,2]:=test;
  ....
  Write(MyFile,DataSet); // Das Array wird in die Datei geschrieben
  CloseFile(MyFile); // Die Datei wird geschlossen.

  // zum Lesen öffnen
  reset(MyFile);
  Read(MyFile,dataSet);
  CloseFile(MyFile);

...
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
donmarkus

Registriert seit: 21. Dez 2006
14 Beiträge
 
#3

Re: speicherproblem

  Alt 21. Dez 2006, 18:06
ich glaube so etwas brauche ich.
ich verstehe leider nicht was delphi da genau macht. könnten sie mir das bitte kurz erklären? was in welchem schritt passiert?
vielen dank für die schnelle antwort!

mfg donmarkus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: speicherproblem

  Alt 21. Dez 2006, 18:13
Hallo,

habe es oben kommentiert.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
donmarkus

Registriert seit: 21. Dez 2006
14 Beiträge
 
#5

Re: speicherproblem

  Alt 21. Dez 2006, 18:26
vielen dank! alles klar!
ich werde es jetzt versuchen!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: speicherproblem

  Alt 21. Dez 2006, 18:30
--
ich habs hier mal mit nem filestream
--

was für daten hast du im array?

Zum Speichern von strings zum Beispiel:

Delphi-Quellcode:
FS := TFileStream.Create('file.txt',fsCreate or fsWrite);

for i := 0 to high(array) do
begin
  FS.Write(high(array[i])+1); // länge des arrays, kann dann leichter eingelesen werden
  for k := 0 to high(array[i]) do
  begin
    size := length(array[i]); // bzw. SizeOf(array[i]) //länge des strings
    FS.Write(size, SizeOf(size));
    FS.Write(array[i],size);
  end;
end;

FS.Free;
Eventuell solltest du da noch Hier im Forum suchenRessourcenschutzblöcke drumtun. Feste Datentypen zu speichern, geht sehr viel leichter:

Delphi-Quellcode:
FS := TFileStream.Create('file.txt',fsCreate or fsWrite);

for i := 0 to high(array) do
begin
  FS.Write(high(array[i])+1); // länge des arrays, kann dann leichter eingelesen werden
  FS.Write(array[i],high((array[i]+1)*SizeOf(array[i,0]));
end;

FS.Free;
Dann wird einfach der komplette Unterarray genommen und geschrieben.

Das Laden geht dann analog:

- länge auslesen (FS.read)
- array per setlength() auf länge bringen
- FS.read(array[i,0],size*SizeOf(array[i,0]))
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
donmarkus

Registriert seit: 21. Dez 2006
14 Beiträge
 
#7

Re: speicherproblem

  Alt 21. Dez 2006, 19:22
sorry dass ich es ned blicke*gg*

bei "Assign (MyFile, 'MyArrayFile.dat' );" kommt immer die fehlermeldung :
[Fehler] Unit1.pas(56): E2010 Inkompatible Typen: 'TPersistent' und 'Text'

und bei test kommt immer undefinierter bezeichner ( was muss ich für test einsetzen?)

sry!
mfg donmarkus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: speicherproblem

  Alt 21. Dez 2006, 20:29
Hallo,

sorry, habe mich da ein wenig vertan.
Nehme anstelle von Assign AssignFile, damit sollte es gehen.

Zitat:
und bei test kommt immer undefinierter bezeichner ( was muss ich für test einsetzen?)
Was für ein Test?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
donmarkus

Registriert seit: 21. Dez 2006
14 Beiträge
 
#9

Re: speicherproblem

  Alt 22. Dez 2006, 11:03
dataSet[1,2]:=test; <- dieses test ?? für was ist das is dass ne string variable oder was kannich mit der machen?

danke für die schnellen antowrten!
mfg donmarkus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: speicherproblem

  Alt 22. Dez 2006, 11:19
Zitat von donmarkus:
dataSet[1,2]:='test'; <- dieses test ?? für was ist das is dass ne string variable oder was kannich mit der machen?

danke für die schnellen antowrten!
mfg donmarkus
Habe ich übersehen, da gehören noch die ' ' dran. War als TestString gedacht.
Ich weiß ja nicht mit welchen Sachen Du Dein Array befüllen willst.

Grüße
Klaus
Klaus
  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 20:22 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