Autor Beitrag
KleinesProgramm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mi 23.04.08 16:51 
ja ich weiß: multitopic und alle kriegen schon die kalte kotze wenns um des scheiß thema geht, ;) ich hab schon verstanden

aber die anderen topics wurden alle total unsachlich und konfus geführt dass ich total den durchblick verloren hab (ja, "du noob" ich weiß)


kann mir einer bitte kurz und knapp sagen wie ich meine String-Variable A in C:\Test.txt speichere, danke!

Moderiert von user profile iconNarses: Dateiname ent"linked"
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 23.04.2008 um 23:39
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 23.04.08 17:05 
Hallo user profile iconKleinesProgramm

user profile iconKleinesProgramm hat folgendes geschrieben:
multitopic und alle kriegen schon die kalte kotze wenns um des scheiß thema geht

Mutitopic ist das doch nicht, hier geht es doch nur um das Thema "Variablen speichern und wieder laden". Das passt doch prima in ein Topic :gruebel:

To Topic:

user profile iconKleinesProgramm hat folgendes geschrieben:
kann mir einer bitte kurz und knapp sagen wie ich meine String-Variable A in C://Test.txt speichere

Geht es wirklich nur um die eine Variable A? Dann reicht eine einfache Textdatei. Sonst würde ich dir für den Anfang eine Suche in: Delphi-Forum, Delphi-Library INI-DATEI empfehlen.

Egal welchen Dateityp du wählst, du solltest niemals Dateien auf C:\ speichern. Stell dir mal vor, das würde jedes Programm machen ;)

Wähle also zuerst einen Ort, an dem die Datei gespeichert werden soll. Für den Anfang reicht wohl das Anwendungsverzeichnis, bei fortgeschrittenen Programmen solltest du einen globalen Ordner nehmen. Das kann zum Beispiel einer in Anwendungsdaten sein.

Um eine einfache Datei zu speichern, kannst du TStringList nehmen. Da passen zwar mehrere Variablen rein, aber dann wird es unübersichtlich. In diesem Fall solltest du also wirklich eine INI-Datei nehmen.

Also, erstellen wir uns eine String-Liste, fügen die Variable hinzu, speichern wir die Datei und entfernen wir anschließend die Liste wieder.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var StringList: TStringList;
begin
  StringList := TStringList.Create;
  try
    StringList.Add(A);
    StringList.SaveToFile('Einstellungen.txt');
  finally
    StringList.Free;
  end;
end;

Die try ... finally-Konstruktion ist notwendig, weil beim Speichern ein Fehler auftreten kann. Ohne dieses Konstrukt würde die Prozedur verlassen werden, bevor die Liste wieder freigegeben werden kann. finally wird immer ausgeführt, auch wenn ein Fehler auftrat.

Ich hoffe, das hilft dir weiter. Sonst frag einfach weiter :D

Viele Grüße,
Yogu
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mi 23.04.08 17:09 
es gibt mehrere möglichkeiten.

einerseits mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure speichern;
  var f: TFile;
begin
  if fileexists('DeinFilenamePlusPfad'then begin
    AssignFile(f, 'DeinFilenamePlusPfad'); 
    rewrite(f);
    Writeln('f', DeinString); 
    CloseFile(f);
    end
  else begin
    CreateFile; //parameter weiß ich nicht, bitte in der hilfe nachsehen
    AssignFile(f, 'DeinFilenamePlusPfad'); 
    rewrite(f);
    Writeln('f', DeinString); 
    CloseFile(f);
  end;
end;


oder du machst so wie Yogu es gesagt hat.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Zorro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76

Win 2000, Win XP Pro
Delphi 7 Architect
BeitragVerfasst: Do 24.04.08 11:46 
user profile iconelundril hat folgendes geschrieben:
es gibt mehrere möglichkeiten.

einerseits mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure speichern;
  var f: TFile;
begin
  if fileexists('DeinFilenamePlusPfad'then begin
    AssignFile(f, 'DeinFilenamePlusPfad'); 
    rewrite(f);
    Writeln('f', DeinString); 
    CloseFile(f);
    end
  else begin
    CreateFile; //parameter weiß ich nicht, bitte in der hilfe nachsehen
    AssignFile(f, 'DeinFilenamePlusPfad'); 
    rewrite(f);
    Writeln('f', DeinString); 
    CloseFile(f);
  end;
end;


oder du machst so wie Yogu es gesagt hat.

lg elundril


Wobei die Abfrage auf Exists unnötig ist (und ebenso der CreateFile-Teil), da "rewrite" die Datei auf jeden Fall erzeugt (und eine evtl. vorhandene überschreibt)
[evtle Änderungen in DelphiVersionen > 7 nicht berücksichtigt]

Greetz
Zorro

_________________
Real programmers confuse Xmas and Halloween because DEC 25 = OCT 31