Delphi-Speichern->Zeile zuviel

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Horschtele, 28. März 2008 .

Schlagworte:
  1. 28. März 2008
    Code:
     
    TYPE
     Datentype=record
     fun:string[20];
     a:string[20];
     b:string[20];
     c:string[20];
     d:string[20];
     end;
    
     VAR
     daten:file of datentype;
     datenzwischen: datentype;
     pfad:string;
    {$R *.dfm}
    
    [B]procedure Darstellen;[/B]
    var
    i:integer;
    begin
    with form1.stringgrid1 do
     begin
     rowcount:=2;
     for i:=1 to filesize(daten)-1 do
     begin
     seek(daten,i);
     read(daten,datenzwischen);
     cells[0,i]:=(datenzwischen.fun);
     cells[1,i]:=(datenzwischen.a);
     cells[2,i]:=(datenzwischen.b);
     cells[3,i]:=(datenzwischen.c);
     cells[4,i]:=(datenzwischen.d);
     rowcount:=rowcount+1;
     end;
     end;
    end;
    
    [B]procedure TForm1.Button7Click(Sender: TObject);//öffnen[/B]
    begin
    form1.button6.Visible:=true;
    if form1.OpenDialog1.execute then
     begin
     pfad:=form1.OpenDialog1.FileName;
     form1.Caption:=pfad;
     assignfile(daten,pfad);
     reset(daten);
     darstellen;
     closefile(daten);
     form1.StringGrid1.RowCount:=form1.StringGrid1.RowCount;
     end;
    end;
    
    [B]procedure TForm1.Button6Click(Sender: TObject);//speichern[/B]
    var
    j:integer;
    begin
    assignfile(daten,pfad);
    reset(daten);
    
    for j:=1 to form1.stringgrid1.rowcount-1 do
     begin
     datenzwischen.fun:=form1.StringGrid1.cells[0,j+1];
     datenzwischen.a:=form1.StringGrid1.cells[1,j+1];
     datenzwischen.b:=form1.StringGrid1.cells[2,j+1];
     datenzwischen.c:=form1.StringGrid1.cells[3,j+1];
     datenzwischen.d:=form1.StringGrid1.cells[4,j+1];
     seek(daten,j+1);
     write(daten,datenzwischen);
    
     end;
    
    closefile(daten);
    end;
    
    [B]procedure TForm1.Button5Click(Sender: TObject);//speichern in[/B]
    Var
    i:integer;
    begin
    if form1.savedialog1.Execute then
     begin
     Pfad:=form1.SaveDialog1.FileName;
     form1.Caption:=pfad;
     assignfile(daten,pfad);
     rewrite(daten);
     seek(daten,1);
     for i:=1 to form1.StringGrid1.RowCount-1 do
     begin
     with form1.StringGrid1 do
     begin
     datenzwischen.fun:=cells[0,i];
     datenzwischen.a:=cells[1,i];
     datenzwischen.b:=cells[2,i];
     datenzwischen.c:=cells[3,i];
     datenzwischen.d:=cells[4,i];
     write(daten,datenzwischen);
     end;
     end;
     closefile(daten);
     end;
    
    form1.button6.Visible:=true;
    end;

    Folgendes Problem: wenn ich die Öffnen-Prozedur ausführe, dann steht zwar in der Tabelle das was in der Datei gespeichert war, er hängt unten aber noch überflüssiger weise ne Leerzeile dran. Was tun? ?(
    Warscheinlich ist ein Fehler in der Speichern (in) Procedure, aber welcher? Es kommt (Vermutung) eine Leerzeile durch die Speichern-Proz und eine durch die SpeichernIn-Proz.

    Hoffe es kann mir jemand helfen, BW is klar...
     
  2. 28. März 2008
    AW: Delphi-Speichern->Zeile zuviel

    wenn du eine einfache lösung haben willst ermittle doch mit length die länge der daten und lösch einfach das letzte ist zwar keine saubere lösung aber sollte eigentlich gehen.
     
  3. 28. März 2008
    AW: Delphi-Speichern->Zeile zuviel

    danke schön ich glaube so gehts, wenn aber noch wer ne andere Lösung kennt, bitte sagen...
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.