![]() |
Array speichern und laden
Hi,
wie kann ich ein Werte eines Arrays in einer externen Datei speichern und durch laden wieder in einem Stringrid ausgeben lassen? ich bin bis jetzt soweit gekommen:
Delphi-Quellcode:
das speichern funktioniert, die datei wird erzeugt und es steht auch was drin, aber die ausgabe klappt nicht, da kommt die fehlermeldung: Inkompatible Typen 'String' und 'Tf'
type TValue=record
a:integer ; b:boolean ; end; type Tf= array[1..81] of TValue ; var sp: file of Tf; procedure TForm1.FormCreate(Sender: TObject); begin if fileexists('xxx.dat') then assignfile(sp,'xxx.dat') else begin assignfile(sp,'xxx.dat'); rewrite(sp); closefile(sp); end; end; procedure TForm1.Button1Click(Sender: TObject) var hilf:Tf; x,y:integer ; begin reset(sp); write(sp,hilf); closefile(sp); end; procedure TForm1.Button2Click(Sender: TObject) var hilf:Tf; x,y:integer ; begin reset(sp); read(sp,hilf); StringGrid1.Cells[x,y]:=hilf; closefile(sp); end; bitte helft mir... Melvyn |
Re: Array speichern und laden
erstmal mußt du die Datei zum Schreiben auch mit Schreibzugriff öffnen.
Delphi-Quellcode:
und hilf ist ein Array of Record und Cells ist ein String
procedure TForm1.Button1Click(Sender: TObject)
var hilf:Tf; x,y:integer ; begin rewrite(sp);
Delphi-Quellcode:
da mußt du also hilf einzeln durchgehn und die Integer/Boolean auch noch in einen String umwandeln :zwinker:
StringGrid1.Cells[x,y] := hilf;
|
Re: Array speichern und laden
Was soll den um Grid ausgegeben werden?
Der Typ kann natürlich so nicht in eine Zelle geschrieben werden. |
Re: Array speichern und laden
mmh aber erzeugt rewrite nicht eine komplett neue datei?
meines wissens nach is doch reset der befehl um eine datei zu öffnen... den rest ahb ich nicht kapiert, kannst du mir ein beispiel geben was du meinst? @mkinzler: in das stringgrid werden zahlen und buchstaben eingegeben und abgespeichert. die sollen dann auch wieder ausgegeben werden... |
Re: Array speichern und laden
Delphi-Quellcode:
// Reset - zum lesen öffnen
// Rewrite - zum schreiben öffnen // Append - zum lesen/schreiben öffnen und cursor ans Dateiende // aus system.pas: function _ResetText(var t: TTextRec): Integer; begin Result := OpenText(t, fmInput); end; function _RewritText(var t: TTextRec): Integer; begin Result := OpenText(t, fmOutput); end; function _Append(var t: TTextRec): Integer; begin Result := OpenText(t, fmInOut); end; Zitat:
Zitat:
|
Re: Array speichern und laden
kann ich nicht einfach hilf so umwandeln das es im grid ausgegeben wird?
wenn ja wie mach ich das (ich kenne nur StrToInt und IntToStr) |
Re: Array speichern und laden
Hier brauchst du BoolToStr() und IntToStr() oder Format()
|
Re: Array speichern und laden
tja, das mußt du schon selber machen
z.B: dein hilf-Array durchgehn, umwandeln und die Ergebnisse an irgendwas übergeben ...
Delphi-Quellcode:
for i := 1 to 81 do begin
StringGrid1.Cells[0,i] := IntToStr(hilf[i].a); StringGrid1.Cells[1,i] := BoolToStr(hilf[i].b); end; |
Re: Array speichern und laden
achso jetz hab ichs kapiert :-D
aber mal noch ne andre frage: wie lasse ich buchstaben, die im stringgrid stehn in zahlen umwandeln? hab mir das so gedacht (funktioniert aber nicht):
Delphi-Quellcode:
meinetwegen wenn in[0,0] ein A steht das es zu einer 1 umgewandelt wird, mit der gerechnet weden kann...
Stringrid1.Cells[x,y]:=chr(ord(Stringgrid1.cells[x,y])-16);
|
Re: Array speichern und laden
einen String kannst du nicht so direkt in eine Zahl umwandeln, wenn dann könntest du höchstens das 1. Zeichen im String also [1] so verarbeiten
Delphi-Quellcode:
aber das hat ja jetzt nichts mit dem Array-Datei-Problem dieses Threads zu tun
Stringrid1.Cells[x,y]:=chr(ord(Stringgrid1.cells[x,y][1])-16);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz