Autor Beitrag
Snuffy
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 17.04.20 17:09 
Hallo Leute,
in Folge der Aktuellen Corona Kriese bekomme ich von der Schule Aufgaben für Zuhause.
Nur besteht bei dieser Aufgabe das Problem,dass ich überhaupt keinen Ansatz habe,wie ich es angehen soll.
Das Thema wurde zuvor nur kurz angerissen und nun muss ich ein Programm damit schreiben.

Nun habe ich schon ein Programm geschrieben,welches bereits vorhandene Daten aus einer txt Datei,die ich vorher erstellt habe,in das Stringgrid lädt.

Aber wie kann ich neue Einträge hinzufügen?
Wie kann ich diese Speichern,so dass sie beim nächsten öffnen noch da sind?
Und was sind die dazugehörigen "Befehle"?

Vielen Dank jetzt schon für eure Hilfe.


Das ganze sieht bis jetzt folgendermaßen aus:
ausblenden volle Höhe 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
var
  Form1: TForm1;
  tf:textfile; //Textdatei
  i:integer=0//zählervariable
  p:integer;  //kompiler
  zeile:string;
  Spalte:string;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//Zuweisung
 opendialog1.Execute;
 assignfile(tf,opendialog1.filename);
 reset(tf);
 repeat
   i := i+1;
   readln(tf,zeile);
   Stringgrid1.Cells[0,i]:=inttostr (i); //Erste Spalte als laufende Nummer

    p := pos('#',zeile);              
   Stringgrid1.Cells[1,i]:=copy(zeile,0,p-1);    //Zeile Kopieren in Stringgrid
   delete(Zeile,1,p);                            //Zeile löschen im Speicher (nicht txt Datei)

    p := pos('#',zeile);
   Stringgrid1.Cells[2,i]:=copy(zeile,0,p-1);
   delete(Zeile,1,p);

    p := pos('#',zeile);
   Stringgrid1.Cells[3,i]:=copy(zeile,0,p-1);
   delete(Zeile,1,p);

    p := pos('#',zeile);
   Stringgrid1.Cells[4,i]:=copy(zeile,0,p-1);
   delete(Zeile,1,p);

   Stringgrid1.Cells[5,i]:=copy(zeile,0,length(Zeile));
   delete(Zeile,1,length(Zeile));

 Stringgrid1.RowCount  := Stringgrid1.RowCount+1;

 until eof(tf);
end;


Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 17.04.2020 um 19:46
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4297
Erhaltene Danke: 924

Win10
C#, C++ (VS 2015/17)
BeitragVerfasst: Fr 17.04.20 18:57 
Hallo und :welcome:,

ähnlich wie du bisher die Daten eingelesen hast, kannst du sie auch wieder in einer Datei speichern: ...ein TStringGrid in eine Datei speichern & laden?

Und so wie du es bisher auch machst, kannst du mittels Stringgrid1.RowCount := Stringgrid1.RowCount+1; eine neue (leere) Zeile einfügen.

Und bei deinem Dialog solltest du den Rückgabewert überprüfen (ob der Anwender "OK" oder "Abbrechen" ausgewählt hat), s. UsingDialogs (Delphi).

Für diesen Beitrag haben gedankt: Snuffy
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 209
Erhaltene Danke: 12



BeitragVerfasst: Fr 17.04.20 22:54 
Hallo Snoffy,
sieh doch mal hier nach:
www.delphi-treff.de/...speichern-und-laden/
oder für weitere StringGridfunktionen, die mir sehr geholfen haben.
www.delphi-treff.de/...onenten/tstringgrid/
Du musst dann auch nicht Zelle für Zelle lesen, sondern alle Einträge der StringGridzeile ist Text.
Gruß hRb

Für diesen Beitrag haben gedankt: Snuffy
Snuffy Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 18.04.20 11:21 
Danke für die schnellen Antworten @Th69 und @hRb! :D

Ich habe mich jetzt mit euren Tips nochmal an ein neues geordnetes Projekt gesetzt und nun Funktioniert alles so wie es soll.
Vor allem die verlinkte Seite Delphi Treff sollte ich mir merken. Doof das ich nicht schon früher drauf gestoßen bin.

Vielen Dank und Liebe Grüße,

Snuffy :lol: