Autor Beitrag
SignsOfCore
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 16.01.09 19:50 
Hallo ihr lieben :wink:

Ich möchte per Mausklick, einige Variablen (die ich per Edit-Feld ändern kann) in eine .TXT Datei schreiben.
Das ganze sollte dann ca. (s. Anhang) aussehen.

Natürlich sollte jedes neue "Item" hinten angereiht werden.
Also sollte meine .TXT in etwa so aussehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
XYZ-756
BeschreibungXYZ
Typ93
KeinSonstiges
// Nächstes Item
XYZ-757
...
Ich habe mich schon damit befasst, allerdings ist das etwas zu hoch für mich.
Wäre sehr nett wenn ihr mir Tipps geben könntet und ich es dann erstmal damit versuchen könnte ;)
Bitte keinen fertigen Codes, ich möchte es erstmal selber versuchen.


Gruß
SignsOfCore

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von SignsOfCore am Fr 16.01.09 19:57, insgesamt 1-mal bearbeitet
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Fr 16.01.09 19:52 
Such mal nach AssignFile, Reset, ReWrite, WriteLn und CloseFile; evtl. auch FileMode.
Damit solltest du (für Delphi) fündig werden.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 16.01.09 19:52 
Die einfachste Variante wäre mit einer TStringlist, die Du mit den Variablen befüllst und dann mit SaveToFile speicherst.
SignsOfCore Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 16.01.09 20:01 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Die einfachste Variante wäre mit einer TStringlist, die Du mit den Variablen befüllst und dann mit SaveToFile speicherst.


Hi!
Danke für deine fixxe Antwort.

Habe mich schon darüber etwas schlau gemacht und bin auf diesen Code gestoßen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure;
var
  eins: TStringList;
begin
  eins := TStringList.Create;
  blabla...;
  eins.Free;
end;



Heißt dass das die Variable eins nun den Wert "blabla..." trägt?
Wenn ja, wie schreibe ich dass in eine TXT und wie Reihe ist das hinten an?


Gruß
Core
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Fr 16.01.09 20:34 
Ich empfehle dir erstmal den Crashkurs unseres Admins. Da sind die grundlegenden Dinge für Delphi ganz gut erklärt.

Dann siehst du auch, das "blabla" nur ein Platzhalter ist und keinesfalls etwas in der Stringliste ändert.

Die Stringliste selbst hat Methoden anhand derer man ihren Inhalt ändern kann, also sowas wie TStringList.Add() um einen Eintrag hinzuzufügen.

Zu TStringList solltest du auch was in der CodeGear-Hilfe finden.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 16.01.09 21:27 
user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
Zu TStringList solltest du auch was in der CodeGear-Hilfe finden.
Um genau zu sein hier: ;-)
Classes.TStringList
und die Public Methoden:
(den Link musst du leider kopieren)
ausblenden Quelltext
1:
http://docs.codegear.com/docs/radstudio/radstudio2007/RS2007_helpupdates/HUpdate4/DE/html/delphivclwin32/_!!MEMBERTYPE_Methods_Classes_TStringList_14_Public_Methods.html					
SignsOfCore Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Sa 17.01.09 14:33 
Moin Moin ;)

Also, bis jetzt habe ich folgendes:

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:
48:
49:
50:
51:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Test: TStringList;
  xyz: Textfile;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

Test := TStringList.Create;
Test.Add ('Test1');
Test.Add ('Test2');
Test.Add ('Test3');
Test.Add ('Test4');


end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(xyz,'xyz.txt');
Rewrite(xyz);
  writeln(xyz,''+(Test)+'');
CloseFile(xyz);

end;

end.



Wie bekomme ich meine Stringlist nun in die .TXT Datei?
Außerdem weiß ich immernoch nicht wie man per EditFeld die Daten hinter anreihen kann.




Gruß
Core
Oreaden
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 16



BeitragVerfasst: Sa 17.01.09 14:50 
Seiet gegrüßt SignsOfCore,

user profile iconSignsOfCore hat folgendes geschrieben Zum zitierten Posting springen:
Das ganze sollte dann ca. so (*klick mich*) aussehen.[/code]

Wäre es Dir möglich, das Bild als Anhang zu den Beitrag zu hinterlegen, damit der Thread auch noch Hilfe an anderer Stelle leisten könnte.

Dank und Gruß
OREADEN
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 17.01.09 14:55 

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
SignsOfCore Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Sa 17.01.09 16:32 
user profile iconOreaden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconSignsOfCore hat folgendes geschrieben Zum zitierten Posting springen:
Das ganze sollte dann ca. so (*klick mich*) aussehen.[/code]

Wäre es Dir möglich, das Bild als Anhang zu den Beitrag zu hinterlegen, damit der Thread auch noch Hilfe an anderer Stelle leisten könnte.

Hallo ;)

Narses hat das schon für mich erledigt. (Danke übrigens dafür, Narses.)
Ich werde in Zukunft drauf achten, alle externen Inhalte auch hier hochzuladen.

Gruß
Core



user profile iconBlackheart666 hat folgendes geschrieben Zum zitierten Posting springen:
Stringlist
www.delphitutorials....rwendet-man-sie.html

Dankeschön. Jetzt bin ich schonmal etwas weiter.
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:
48:
49:
50:
51:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Test: TStringList;
  xyz: Textfile;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

Test := TStringList.Create;
Test.Add ('Test1');
Test.Add ('Test2');
Test.Add ('Test3');
Test.Add ('Test4');


end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(xyz,'xyz.txt');
Rewrite(xyz);
test.SaveToFile('xyz.txt');
CloseFile(xyz);

end;

end.
Beim Befehl Rewrite wird die Liste aber immer wieder neu überschrieben oder?
Ich möchte aber, dass alles hinten angereiht wird. How to?

Ich bastel erstmal eine kleine Vorlage und lade sie dann hoch, damit ihr seht was ich möchte ;)

Gruß
Core

Moderiert von user profile iconNarses: Beitragsformatierung überarbeitet.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 17.01.09 16:39 
user profile iconSignsOfCore hat folgendes geschrieben Zum zitierten Posting springen:
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:
var
  Test: TStringList;
  xyz: Textfile;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

Test := TStringList.Create;
Test.Add ('Test1');
Test.Add ('Test2');
Test.Add ('Test3');
Test.Add ('Test4');


end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(xyz,'xyz.txt');
Rewrite(xyz);
test.SaveToFile('xyz.txt');
CloseFile(xyz);

end;

end.
Beim Befehl Rewrite wird die Liste aber immer wieder neu überschrieben oder?
Ich möchte aber, dass alles hinten angereiht wird. How to?
Deine TStringList hat absolut gar nichts mit AssignFile oder so zu tun. Deklariere die Variablen in den Prozeduren wo du sie verwendest, dann kann so eine seltsame Konstruktion gar nicht passieren...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
var
  Test: TStringList;
begin
Zudem willst du in FormCreate ja wohl eher die StringList aus der Datei laden (LoadFromFile) falls die Datei bereits existiert (if FileExists), oder?
Mit Add fügst du ja neue Einträge der StringList hinzu.


Zuletzt bearbeitet von jaenicke am Sa 17.01.09 16:39, insgesamt 1-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 17.01.09 16:39 
Doppelt gemoppelt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
//AssignFile(xyz,'xyz.txt');
//Rewrite(xyz);
test.SaveToFile('xyz.txt'); //diese Zeile genügt
//CloseFile(xyz);

Und zum Anhängen: Stringliste erstellen, sofern Datei existiert Stringliste per LoadFromFile laden und dann wie gehabt mit Add() hinten anhängen.
Oreaden
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 16



BeitragVerfasst: Sa 17.01.09 16:41 
Seiet gegrüßt SignsOfCore,

nun werfe Er einen Blick hierauf

OREADEN grüßet
SignsOfCore Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Di 20.01.09 19:36 
user profile iconOreaden hat folgendes geschrieben Zum zitierten Posting springen:
Seiet gegrüßt SignsOfCore,

nun werfe Er einen Blick hierauf

OREADEN grüßet


Hallo :P

Dankeschön, aber da war ich schon ;)


Langsam geb ich´s auf. Mir wird nur gesagt was ich falsch mache, aber nicht wie es richtig ist.


Schönen Tag.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 20.01.09 20:11 
Was ist denn da jetzt so schwer? Dass wir hier keine fertigen Codes liefern? Beschrieben wurde eine mögliche Vorgehensweise jedenfalls mitsamt der nötigen Befehle. Und mal auf F1 zu drücken, darf ja wohl verlangt sein.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19345
Erhaltene Danke: 1753

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 20.01.09 23:17 
Na gut, mal zwei Beispiele um die Verwirrung durch die beiden etwas durcheinandergeratenen Vorschläge mal zu beseitigen:
Entweder:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
  Test: TStringList;
begin
  Test := TStringList.Create;
  Test.Add('Test1');
  // ...
  Test.SaveToFile(ExtractFilePath(ParamStr(0)) + 'xyz.txt');
  Test.Free;
end;
Oder:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
  xyz: TextFile;
begin
  AssignFile(xyz, ExtractFilePath(ParamStr(0)) + 'xyz.txt');
  Rewrite(xyz); // oder Append zum Anhängen
  WriteLn(xyz, 'Test1');
  // ...
  CloseFile(xyz);
end;
Aber eben nicht beides gemischt. ;-)

Jetzt musst du so eben deine Variablen in die Datei schreiben. Jetzt mach aber erstmal selbst weiter. ;-)