Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Inhalt vom StringGrid speichern


marvin521993 - Di 13.02.07 18:31

Moderiert von user profile iconTino: Abgetrennt von Vokabelprogramm!! Welche Komponente?? [http://www.delphi-forum.de/viewtopic.php?t=69835&start=0&postdays=0&postorder=asc&highlight=]

ja ok es tut mir leid echt jetz sry
wie isn die eigenschaft um die zellen vom stringgrid zu speichern?


Delphi-Quelltext
1:
2:
3:
4:
If Opendialog1.execute Then
 begin
 Stringgrid1.?.savetofile(Savedialog1.filename);
end;


was muss ich anstatt dem fragezeichen einsetzen?

Lg
Marvin


Aya - Di 13.02.07 18:40

user profile iconmarvin521993 hat folgendes geschrieben:
was muss ich anstatt dem fragezeichen einsetzen

Rows[i]


marvin521993 - Di 13.02.07 18:45

warum i ich hatte doch gar keine variable fest gelegt?
oder meintest du ich muss ne for schleife machen?
so dann etwa?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
If Savedialog1.Execute Then
 begin
  for i := 0 to 50 do
   begin
    Stringgrid1.Rows[i].SavetoFile(Savedialog1.Filename);
   end;
 end;

Lg
Marvin


Aya - Di 13.02.07 19:08

Um nochmal auf die sache mit dem selber nachdenken zurückzukommen... ;)

Wenn du deinen kleinen Codeschnipsl da oben mal ausführst, wirst du merken das du in deiner Textdatei immer nur eine Zeile drinstehen hast... nach genauerer untersuchung des ganzen bemerkst du dann, dass das immer die letzte, bzw 50. Zeile ist.

Dann kommt der Teil mit dem nachdenken über die lösung des Problems, bzw zuerst des verstehens.
Die For-schleife speichert 50x eine Zeile in der Datei.. sie überschreibt sie dabei logischerweise jedesmal.

Was muß also getan werden? Alle Zeilen erstmal in eine Liste o.Ä. zusammenpacken -> TStringList

Und hier lass ich dich erstmal allein weiter überlegen, bzw -> F1 (Hilfe) oder Forensuche.

Aya

PS: Sorry, ich weiß klingt fies.. aber deine Fragen klingen für mich echt so als würdest du bevor du auch nur einmal die Suche oder die Hilfe bemühst sofort hier posten.. versuch mal selber auf lösungen zu kommen, und werd nich zu einem Copy&Paste "Programmierer"


marvin521993 - Di 13.02.07 19:18

gut ich habe jetz überlegt wirklich :)
ich bin zu folgendem entschluss gekommen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
If Savedialog1.Execute Then
 begin
 daten := TStringList.create;
  for i := 0 to 50 do
   begin
    daten.Add(StringGrid1.Cells[i,1]);
    daten.Add(StringGrid1.Cells[i,0]);
   end;
   daten.SaveToFile(SaveDialog1.FileName);
 end;
 daten.Free;
end;


aber der speichert nur die ersten 2 zeilen vom stringgrid

kannst du mir sagen warum?

Lg
Marvin

Ps: Hab wirklich überlegt


Aya - Di 13.02.07 19:42

user profile iconmarvin521993 hat folgendes geschrieben:
kannst du mir sagen warum?

Spontan würd ich sagen weil du aus irgendeinem grund Rows[] durch Cells[] ersetzt hast :?


Delete - Di 13.02.07 20:41

hallo marvin521993,

'n heisser Tip. den cursor auf das element platzieren und F1 drücken :-) . ist schneller und meist auch kompetenter.


Aya - Di 13.02.07 20:46

user profile iconGrenzgaenger hat folgendes geschrieben:
Ist schneller und meist auch kompetenter.

user defined image


Delete - Di 13.02.07 22:32

user profile iconAya hat folgendes geschrieben:
user profile iconGrenzgaenger hat folgendes geschrieben:
Ist schneller und meist auch kompetenter.

user defined image


tja aya, ist halt nicht jeder so 'ne koryphäe wie du :-)

vor allem braucht die hilfe nur 0,1 sekunden um auskunft zu geben, etwas hier ins forum zu hacken, geht da bedeutend langsamer...


marvin521993 - Mi 14.02.07 17:07

kann mir nich einfach ejamdn sagen was hier dran falsch is??


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TFormvokverwalt.SpeedButton1Click(Sender: TObject);
var i : Integer;
begin
If Savedialog1.Execute Then
 begin
 daten := TStringList.Create;
  for i := 0 to 50 do
   begin
    daten.Add(StringGrid1.Cells[i,0]);
    daten.Add(StringGrid1.Cells[i,1]);
   end;
   daten.SaveToFile(SaveDialog1.FileName);
 end;
 daten.Free;

end;


ich möchte doch einfach nur wissen was hier dran falsch ist :(
aya das mit dem cols geht auch nich

Lg
Marvin


Chryzler - Mi 14.02.07 17:10

user profile iconmarvin521993 hat folgendes geschrieben:
kann mir nich einfach ejamdn sagen was hier dran falsch is??


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TFormvokverwalt.SpeedButton1Click(Sender: TObject);
var i : Integer;
begin
If Savedialog1.Execute Then
 begin
 daten := TStringList.Create;
  for i := 0 to 50 do
   begin
    daten.Add(StringGrid1.Cells[i,0]);
    daten.Add(StringGrid1.Cells[i,1]);
   end;
   daten.SaveToFile(SaveDialog1.FileName);
 end;
 daten.Free;

end;


ich möchte doch einfach nur wissen was hier dran falsch ist :(
aya das mit dem cols geht auch nich

Lg
Marvin

Und StringGrid1.Cells[0, i] haste noch nicht ausprobiert?


Aya - Mi 14.02.07 17:39

user profile iconmarvin521993 hat folgendes geschrieben:
aya das mit dem cols geht auch nich

Vieleicht weil ich Rows und nich Cols geschrieben hab? :P


marvin521993 - Mi 14.02.07 17:50

ja mit rows aber auch nich ich brauche nur den fehler den ich da in der formel habe
und ich weiss ja auch nicht ob das richtig ist, was mir chryzler erzählt hat, da der compiler nich reagiert
[Fataler Fehler] Ausgabedatei 'C:\Dokumente und Einstellungen\Desktop\Delphi\Vokabelabfrager\Project1.exe' kann nicht erstellt werden

so ist der fehler
muss ich das programm nochmal ganz von neu machen?


Lg
Marvin


Aya - Mi 14.02.07 17:54

Das bedeutet einfach das die EXE Datei nicht erstellt werden kann... kann viele gründe haben:

- EXE Datei ist grad geöffnet = kann nicht überschrieben werden
- Keine schreibrechte im verzeichnis
- Verzeichnis existiert nicht
etc..


marvin521993 - Mi 14.02.07 18:00

ok es geht jetzt danke dir :)




aber leider geht das speichern immer noch nicht :( och mann das kann doch nicht so schwer sein

Lg
Marvin


Aya - Mi 14.02.07 18:04

Wüsste nicht warum dashier nicht gehen sollte


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TFormvokverwalt.SpeedButton1Click(Sender: TObject);
var 
  i: Integer;
begin
  if Savedialog1.Execute then begin
    daten := TStringList.Create;
    for i := 0 to 50 do
      daten.Add(StringGrid1.Rows[i]);
    daten.SaveToFile(SaveDialog1.FileName);
    daten.Free;
  end;
end;


Aya - Mi 14.02.07 18:26

F1 drücken...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TFormvokverwalt.SpeedButton1Click(Sender: TObject);
var 
  i: Integer;
begin
  if Savedialog1.Execute then begin
    daten := TStringList.Create;
    for i := 0 to 50 do
      daten.Add(StringGrid1.Rows[i].Text);
    daten.SaveToFile(SaveDialog1.FileName);
    daten.Free;
  end;
end;