Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Speichern eines Stringgrids (https://www.delphipraxis.net/125738-speichern-eines-stringgrids.html)

ArTo_O 10. Dez 2008 21:17


Speichern eines Stringgrids
 
:shock: :pale: :wall: Mal ne kleine Einleitung zu meiner Geschichte(hoffe sie passt hier rein)
Ich bin in der 12ten klasse und leider ein totaler Delphi Analphabet, jeder Schüler unserer klasse muss ein referat vorbereiten. Ich hab das Thema Speichern eines Stringgrids erhalten.
Ich soll den quelltext von Zeile zu Zeile erklären können, dies ist absolut nicht der fall...

Ich weis ich kann von niemanden erwarten das jemand sich die arbeit für mich macht aber (mal ganz erlich :-D) ihr seid meine Letzte hoffnung.

Es geht um folgenden Quelltext ich weis das es auch andere möglichkeiten gibt ein stringgrid zu speicher aber das ist die vorgabe des lehrers...Ich habe es bereit getestet und es funktioniert!
Delphi-Quellcode:
procedure SaveStringGridToFile(StringGrid: TStringGrid; const FileName: String);
var
F: TStringList;
i: Integer;
begin
F := TStringList.Create;
try
F.Add(IntToStr(StringGrid.RowCount));
F.Add(IntToStr(StringGrid.ColCount));
for i := 0 to (StringGrid.RowCount - 1) do
F.Add(StringGrid.Rows[i].CommaText);
F.SaveToFile(FileName);
finally
F.Free;
end;
end;

procedure LoadStringGridFromFile(StringGrid: TStringGrid; const FileName: String);
var
F: TStringList;
i: Integer;
begin
F := TStringList.Create;
try
F.LoadFromFile(FileName);
StringGrid.RowCount := StrToInt(F[0]);
StringGrid.ColCount := StrToInt(F[1]);
for i := 0 to (StringGrid.RowCount - 1) do
StringGrid.Rows[i].CommaText := F[i + 2];
finally
F.Free;
end;
end;
Ich hoffe ihr könnt mir helfen

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]

Die Muhkuh 10. Dez 2008 21:20

Re: Am ende der verzweiflung
 
Hi!

Was genau verstehst Du denn nicht?
Das Referat ist bis morgen, ja?

In der 12. Klasse sollte man in der Lage sein, sich Informationen zu ergoogeln und wenn Du im Unterricht lieber was anderes machst und nicht aufpasst... ;-)

ArTo_O 10. Dez 2008 21:27

Re: Am ende der verzweiflung
 
Nene das ist nicht bis morgen also ich verstehen nicht was er bei der ersten procedur macht also ab
Delphi-Quellcode:
try
F.Add(IntToStr(StringGrid.RowCount));
F.Add(IntToStr(StringGrid.ColCount));
for i := 0 to (StringGrid.RowCount - 1) do
F.Add(StringGrid.Rows[i].CommaText);
F.SaveToFile(FileName);
finally
F.Free;
end;
Ich versteh nur bahnhof// ja das stimmt allerdings blick ich nach dem googeln genausoviel wie voher Was macht der in jeder zeile davon?

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]

SirThornberry 10. Dez 2008 21:28

Re: Am ende der verzweiflung
 
Hallo, kannst du deinem Beitrag bitte einen aussagekräftigen Titel geben der das Problem ansatzweise beschreibt? :)
Wenn du den Quelltext einrückst ist er besser lesbar und man findet meistens auch schneller Fehler.

Wir machen keine Hausaufgaben für andere und genau das willst du hier von uns. Wenn du Fragen zu etwas bestimmten hast stelle diese. Aktuell ist nicht zu erkennen das du dich selbst bemühst.

ryLIX 10. Dez 2008 21:29

Re: Am ende der verzweiflung
 
Du jannst doch in der Hilfe nachschlagen was jede Zeile macht.
Dadurch sollte es dir doch Möglich sein das ganze zu erklären.

Hier findest du auch noch was.

Die Muhkuh 10. Dez 2008 21:30

Re: Am ende der verzweiflung
 
Cursor auf etwas unbekanntes setzen und F1 drücken :zwinker:

Daniel 10. Dez 2008 21:40

Re: Am ende der verzweiflung
 
Eine sehr wahrscheinliche Frage wird zum Thema "TRY ... FINALLY ... END" kommen. Anbei ein Link, der Dir das erklärt. Ob die Erklärung allerdings taugt, wenn man sehr wenig bis gar keine Grundkenntnisse hat, sei dahingestellt:
http://www.delphibasics.co.uk/RTL.asp?Name=Try.

Durch den Rest kannst Du Dich ein wenig durchhangeln. Beispiel:

F.Add(IntToStr(StringGrid.RowCount));

Das lösen wir mal von innen heraus auf - ähnlich wie in Mathe ... ein sog. "Grid" ist nichts anderes als eine Tabelle. Aber das hast Du vermutlich schon gesehen. Die Zeilen heißen "Rows", die Spalten "Columns", kurz "Cols". "RowCount" und "ColCount" liefern die Anzahl an Zeilen / Spalten als natürliche Ganzzahl.

Und diese Ganzzahl wird von etwas verwurstet, das sich "IntToStr()" nennt. Was "IntToStr()" macht, beschreibt folgende Seite: http://www.delphibasics.co.uk/RTL.asp?Name=IntToStr. Da wird also eine Zahl in einen String konvertiert. Was ein String ist, steht auch auf besagter Seite: http://www.delphibasics.co.uk/RTL.asp?Name=String.

Und dieser String wird von der Methode "Add" der Variablen "F" verwurstet. F ist vom Typ TStringList. Auch diese ist auf besagter Seite erklärt: http://www.delphibasics.co.uk/RTL.asp?Name=TStringList.


Und so weiter. Das mag ein wenig steinig sein, aber ein Grundverständnis solltest Du auf diese Weise erlangen können.

ArTo_O 10. Dez 2008 22:01

Re: Speichern eines Stringgrids
 
Ohne witz das hat mir jetz sehr viel geholfen dankeschön!!!

ArTo_O 10. Dez 2008 22:06

Re: Speichern eines Stringgrids
 
Eine frage hät ich tratzdem noch was bringt

finally
F.Free;

jfheins 10. Dez 2008 22:07

Re: Speichern eines Stringgrids
 
try

finally

end;

Sorgt dafür, dass auch bei einem Fehler ("Exception") der Code im finally noch ausgeführt wird. Es wird also trotz dem schwerwiegendem Fehler das Objekt noch freigegeben ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.
Seite 1 von 2  1 2      

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