Autor Beitrag
toebi
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 12.10.06 12:52 
Hallo. ich bin dabei ein kleines programm zu schreiben.
Stringgrid soll in vorgegebens verzeichnis mit endung *.dat gespeichert werden. der name der datei ergibt sich aus einem editfeld. es soll hierbei kein speicherndialog angewendet werden. einfach nur speichern klicken und fertig.
das hab ich soweit gelöst.
PROBLEM: Laden will nicht klappen.
hier soll ein opendialog kommen und ich kann die *.dat auswählen. die werte aus der datei sollen dann im stringgrid erscheinen.

bitte um hilfe.
danke im vorraus toebi.

hier mal der quelltext:
---speichern
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button6Click(Sender: TObject);

var
  F: TStringList;
  i: Integer;
begin
F := TStringList.Create;
  try
    for i := 1 to (StringGrid1.RowCount - 2) do
      F.Add(StringGrid1.Rows[i].CommaText);

    F.SaveToFile('c:\'+Eauftrag.Text+'.dat');
  finally
    F.Free;
  end;
end;



-------Laden ( ist nicht richtig)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button2Click(Sender: TObject);
var
  F: TStringList;
  i: Integer;
begin
  F := TStringList.Create;
  try
    F.LoadFromFile('c:\'+Eauftrag.Text+'.dat');
    StringGrid1.RowCount := StrToInt(F[0]);
    StringGrid1.ColCount := StrToInt(F[1]);
    for i := 0 to (StringGrid1.RowCount - 1) do
      StringGrid1.Rows[i].CommaText := F[i + 2];
  finally
    F.Free;
  end;
end;


Zuletzt bearbeitet von toebi am Do 12.10.06 13:12, insgesamt 2-mal bearbeitet
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 12.10.06 12:58 
bitte formatiere deinen Quelltext (oben die Leiste "Bereiche" -> "Delphi"

zu deinem Problem : was funktioniert schon und was nicht ?
toebi Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 12.10.06 13:16 
ihr müsstet mir mal helfen bei der ladenprozedure.
wie genau ich die *.dat lade und wie ich aus der datei die einzelnen (3) datensätze in die jeweiligen stringgridcells bringe.

Also es werden am anfang 3 dinge in die dat gespeichert.
ISBN, Anzahl, und ein wort. diese liegen in der dat dann so vor 1234567890,1,wort.
so wie mach ich das jetzt genau?
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 12.10.06 13:27 
ok, also du hast die Daten in einer stringlist.
Diese musst du jetzt für jede Zeile durchgehen.
Die Werte schreibst du dann in dein Grid.

Hier ein sehr gutes Tutorial zum Thema Stringgrid : Delphi – TUTORIAL StringGrid

Da ist auch ein Beispiel für dein Problem dabei, dass du nur noch anpassen brauchst.
toebi Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 12.10.06 13:37 
schau dir mal bitte meine speichernprozedur an.
genau zu diesem speichern brauche ich eine ladenprozedure.
die ganzen tuts und hilfen hatte ich mir schonmal angeschaut.
könnt ihr mir denn nicht die paar zeilen hinschreiben die dafür nötig sind?
wär sehr nett, da ich selber daran fast verzweifel
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.10.06 13:42 
wennst kurz zeit hast schreib ich dir schnell n demoprogramm...natürlich mit quelltext =)

LG
Stefan

[edit]

wird doch nix..chef kam grad angetanzt =(

[/edit...

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.


Zuletzt bearbeitet von ZeitGeist87 am Do 12.10.06 13:49, insgesamt 1-mal bearbeitet
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 12.10.06 13:43 
schau in den Link da steht genau das drin was du brauchst auf Seite 10 !!!
toebi Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 12.10.06 14:29 
ich werd daraus nicht schlau. ich brauche doch wie gesagt nur die ladenprozedur.
und bitte keine hinweise auf irgendwelche andern quellcodes. :-(
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 12.10.06 14:51 
Ok, da du anscheinend Schwierigkeiten beim Lesen hast oder zu faul bist habe ich dir den Code aus dem Link nochmal abgeschrieben (markierter Bereich) :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button2Click(Sender: TObject);
var
  F: TStringList;
  x,y,z: Integer;
begin
  F := TStringList.Create;
  try
    F.LoadFromFile('c:\'+Eauftrag.Text+'.dat');  
   StringGrid1.colcount:=strtoint(F.strings[0]);
   StringGrid1.rowcount:=strtoint(F.strings[1]);
   z:=2;
   for x:=0 to StringGrid1.ColCount-1 do
     for y:=0 to StringGrid1.RowCount-1 do
      begin
       StringGrid1.cells[x,y]:=F.strings[z];
       inc(z);
     end;

  finally
    F.Free;
  end;
end;



[EDIT] :

Dabei wird davon ausgegangen, dass du die anzahl der Spalten in der ersten Zeile und die Anzahl der Zeilen in der 2. Zeile deiner Datei gespeichert hast (das musst du dann in die "Speichern"-Prozedur mit reinschreiben. Ausserdem sind alle Daten untereinander gespeichert und nicht wie bei dir 3 in einer Zeile. Aber dass kannst du ja auch in deiner "Speichern"-Prozedur verändern. Deine "Speichern-Prozedur sollte dann so aussehen :


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button6Click(Sender: TObject);

var
  F: TStringList;
  x,y: Integer;
begin
 F:=TStringlist.create;
 F.add(inttostr(StringGrid1.colcount));
 F.add(inttostr(StringGrid1.rowcount));
 for x:=0 to StringGrid1.ColCount-1 do
  for y:=0 to StringGrid1.RowCount-1 do
   F.add(StringGrid1.cells[x,y]);
 F.savetofile('c:\'+Eauftrag.Text+'.dat');
 F.free;
end;


Damit dürfte dann alles funktionieren.
toebi Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 13.10.06 08:21 
ich danke dir. bin halt im programmieren in delphi eher neu.
so. das laden muss jetzt noch in form eines opendialog stattfinden.
ich versuch mich mal daran. hoffe es klappt.

mit großem dank, ein toebi
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 13.10.06 08:26 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TForm1.Button2Click(Sender: TObject);
var
  F: TStringList;
  x,y,z: Integer;
begin
 if opendialog1.execute then
 begin
  F := TStringList.Create;
  try
    F.LoadFromFile(opendialog1.filename);  
   StringGrid1.colcount:=strtoint(F.strings[0]);
   StringGrid1.rowcount:=strtoint(F.strings[1]);
   z:=2;
   for x:=0 to StringGrid1.ColCount-1 do
     for y:=0 to StringGrid1.RowCount-1 do
      begin
       StringGrid1.cells[x,y]:=F.strings[z];
       inc(z);
     end;
  finally
    F.Free;
  end;
 end;
end

LG
Stefan

[edit]

delphi-tags vergessen =)

[/edit]

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.


Zuletzt bearbeitet von ZeitGeist87 am Fr 13.10.06 08:56, insgesamt 1-mal bearbeitet
toebi Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 13.10.06 08:31 
ui danke.
werd mich mal reinlesen. sieht gut aus. danke euch allen.
kann dann endlich mein projekt weiter machen.