![]() |
Probleme mit Speichern...
Also ich hab das problem, dass der mir die zeilen im String nicht so speichert wie sie gespeichert werden müssen: statt Name;Vorname;Adresse;
Name;Vorname;Adresse; macht es Vorname;Adresse;Name;Vorname;Adresse..
Delphi-Quellcode:
ich finde nur den Fehler nicht...
procedure TForm1.BtSpeichernClick(Sender: TObject);
var Textdatei: textfile; i,j: integer; begin if savedialog1.Execute=true then begin assignfile (textdatei, savedialog1.FileName); rewrite (textdatei); for i:=1 to StringGrid1.Rowcount-1 do for j:=1 to StringGrid1.ColCount-1 do begin If j = StringGrid1.ColCount then writeln(textdatei,stringgrid1.cells[j,i]+';') else write (textdatei,stringgrid1.cells[j,i]+';'); end; closefile (textdatei); end; end; |
AW: Probleme mit Speichern...
Die Schleifen müssen bei 0 anfangen. Gehen ja auch bis .Count-1
|
AW: Probleme mit Speichern...
Nicht unbedingt, es kommt darauf an, wie viele FixedRows/FixedCols vorhanden sind.
|
AW: Probleme mit Speichern...
|
AW: Probleme mit Speichern...
Und wenn man jetzt noch weiß, dass TStringGrid.Rows vom Typ TStrings ist, dann kann man es sich viel leichter machen.
|
AW: Probleme mit Speichern...
@DeddyH:
Ich zitiere dich mal: *Pff* viel zu einfach, da könnte ja jeder kommen :lol: :P |
AW: Probleme mit Speichern...
Zumindest habe ich nicht verraten, wie es geht :tongue:
|
AW: Probleme mit Speichern...
Zitat:
Gruß K-H edit: etwa rows[i].text? |
AW: Probleme mit Speichern...
Nicht Text, sondern CommaText in Verbindung mit ein paar anderen Properties.
|
AW: Probleme mit Speichern...
Zitat:
FixedRows mit einer Kopfzeile ist da schon wahrscheinlicher, deswegen i=1 wahrsch. richtig...Es sei denn du merkst, dass dir ein Datensatz fehlt. Deep-Sea's Einwand 2 in #4 würde erklären, wieso alles hintereinandergeknallt wird ohne Zeilenumbruch nach jedem Datensatz. |
AW: Probleme mit Speichern...
Man kann das doch einfach in den jeweiligen Schleifenkopf einbauen, dann sollte es immer passen:
Delphi-Quellcode:
for i := StringGrid1.FixedRows to StringGrid1.RowCount - 1 do
for j := StringGrid1.FixedCols to StringGrid1.ColCount - 1 do |
AW: Probleme mit Speichern...
Das ist mal schlau gedacht:thumb:.
Wieso fällt mir sowas nicht mal ein. |
AW: Probleme mit Speichern...
Man muss sich nur oft genug ärgern, dass man irgendeine Sache nicht bedacht hat, dann sucht man irgendwann automatisch nach solchen Lösungen :zwinker:
|
AW: Probleme mit Speichern...
Zitat:
Code:
gesehen,das
writeln(stringgrid.cells[a,b])
Code:
ist mir ganz durchgerutscht. Da stimmt wohl einiges nicht.
+';'
Gruß K-H |
AW: Probleme mit Speichern...
So ich hab es jetzt erstmal so umgestellt:
Delphi-Quellcode:
Das löst zwar mein Problem, aber sieht nich soo schick aus...
procedure TForm1.BtSpeichernClick(Sender: TObject);
var Textdatei: textfile; z:integer; begin if savedialog1.Execute=true then begin assignfile(Textdatei,savedialog1.FileName); for z:=1 to stringgrid1.RowCount-1 do writeln(Textdatei,stringgrid1.cells[0,z]+';'+stringgrid1.cells[1,z]+';'+stringgrid1.cells[2,z]+';'+stringgrid1.cells[3,z]+';'+stringgrid1.cells[4,z]+';'+stringgrid1.cells[5,z]+';'+stringgrid1.cells[6,z]+';'+stringgrid1.cells[7,z]+';'); end else begin showmessage('Dateiladefehler! Ladevorgang abgebrochen.'); end; closefile(Textdatei); end; |
AW: Probleme mit Speichern...
Wenn du schreibst
Delphi-Quellcode:
wann trifft wohl die Bedingung
for j := 0 to StringGrid1.ColCount -1
Delphi-Quellcode:
zu? ;)
If j = StringGrid1.ColCount then
|
AW: Probleme mit Speichern...
ach ich gebs auf -.-
danke für eure Hilfe... ^^ das Programm geht garnichmehr ich lass es bleiben. Soll mein lehrer mal drüber gucken, ich mach es nichmehr! ich bin keine Kämofernatur :P |
AW: Probleme mit Speichern...
Wie wäre es denn hiermit (Fehlerbehandlung bzgl. Dateioperationen weggelassen)?
Delphi-Quellcode:
procedure TForm1.BtSpeichernClick(Sender: TObject);
var Textdatei: textfile; z, i: integer; sl: TStringList; begin if savedialog1.Execute then begin sl := TStringlist.Create; try Assignfile(Textdatei, savedialog1.FileName); for z := StringGrid1.FixedRows to StringGrid1.RowCount - 1 do begin sl.Assign(StringGrid1.Rows[z]); for i := 0 to StringGrid1.FixedCols - 1 do sl.Delete(0); sl.Delimiter := ';'; sl.StrictDelimiter := true; //nur auf aktuellen Delphi-Versionen WriteLn(Textdatei, sl.DelimitedText); end; CloseFile(Textdatei); finally sl.Free; end; end; end; |
AW: Probleme mit Speichern...
Ich denke da fehlt ein
Delphi-Quellcode:
oder ein "Append" ?
Assignfile(Textdatei, savedialog1.FileName);
Rewrite(Textdatei);{--------------------------------------------------------!!!!} for z := StringGrid1.FixedRows to StringGrid1.RowCount - 1 do .................... CloseFile(Textdatei); Gruß K-H |
AW: Probleme mit Speichern...
Stimmt, das ist mir völlig entgangen.
|
AW: Probleme mit Speichern...
Nicht nur bei Dir:
Delphi-Quellcode:
Gruß
procedure TForm1.BtSpeichernClick(Sender: TObject);
var Textdatei: textfile; z:integer; begin if savedialog1.Execute=true then begin assignfile(Textdatei,savedialog1.FileName); {--}Rewrite(TestDatei); {-------------------------------------} for z:=1 to stringgrid1.RowCount-1 do writeln(Textdatei,stringgrid1.cells[0,z]+';'+stringgrid1.cells[1,z]+';'+stringgrid1.cells[2,z]+';'+stringgrid1.cells[3,z]+';'+stringgrid1.cells[4,z]+';'+stringgrid1.cells[5,z]+';'+stringgrid1.cells[6,z]+';'+stringgrid1.cells[7,z]+';'); end else begin showmessage('Dateiladefehler! Ladevorgang abgebrochen.'); end; closefile(Textdatei); end; K-H |
AW: Probleme mit Speichern...
Ja, ich weiß, ich hatte ja den Originalcode übernommen und lediglich geändert. Dabei ist mir eben nicht aufgefallen, dass die Datei gar nicht angelegt wird.
|
AW: Probleme mit Speichern...
Man könnte ja auch einfach Streams nutzen, anstatt diese Relikte wie AssignFile und Co. :stupid:
@Sir Rufo: Das hatte ich ja schon erwähnt :P |
AW: Probleme mit Speichern...
Oder man nimmt noch eine zweite Stringliste, baut diese aus den "zusammengeklebten" Zeilen auf und speichert sie am Schluss ab. Es gibt immer mehrere Möglichkeiten ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz