Autor Beitrag
ConditionZero
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mo 25.12.06 16:44 
tach,
Ich will ein Trainer machen, wo man Fragen und Antworten eingeben kann und man sich später die Fragen abfragen kann... Jetzt will ich es so das wenn man eine Neue Frage hinzufügen will, das Thema der Frage eingeben soll, z.B. Mathematik etc. Das kann man dann in Edit's eingeben alles und ich will es so machen, dass eine Textdatei erstellt wird für jedes Thema also z.B. eine Textdatei die Mathematik.txt heißt und dann die erste Zeile eine Frage ist, die zweite Zeile die dazugehörende Antwort dann die 3. Zeile eine neue Frage usw... Meine Frage: Wie kann ich denn eine Textdatei anlegen welche den Namen vom Wert Edit1.Text hat? Ich kannte das bisher nur aus TStringGrids mit SaveToFile diese Funktion gibt es aber nicht bei Edit's und Memo's.

LG
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mo 25.12.06 17:04 
Memo1.Lines.SaveToFile gibt es. Du kannst den String eines Edits entweder per FileStream speichern oder die SaveToFile-Methode einer Stringlist benutzen. ;)

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mo 25.12.06 17:12 
öhm wäre ganz doll nett wenn du mir en konkretes beispiel zu FileStream geben kannst, ich blick die methode nicht so ganz :)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.12.06 17:22 
Du kannst zum Beispiel eine TStringList benutzen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  tmp: TStringList;
begin
  tmp := TStringList.Create;
  tmp.Add(edtDeinEdit.Text);
  tmp.Add(edtNochEinEdit.Text);
  tmp.SaveToFile(ExtractFilePath(ParamStr(0)) + '\test.txt');
  tmp.Free;
end;

Ein FileStream ist für Strings dann doch eher ungeeignet. (Es sei denn man nimmt einen ShortString mit einer festen Länge bis 255 Zeichen natürlich.)
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mo 25.12.06 17:45 
ok es klappt bis auf die tatsache das, wenn ich
ausblenden Delphi-Quelltext
1:
  tmp.SaveToFile(ExtractFilePath(ParamStr(0)) + TopicEdit.Text + '.txt');					

mache, dann steht in der erstellten datei in der zeile 1 und 2 auch das topic...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.12.06 18:00 
Hmm??
Mit Add fügst du in die Liste der Strings welche hinzu. Zum Beispiel eben in meinem Beispiel nacheinander den Inhalt der Edit-Felder...
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: Mo 25.12.06 18:01 
dann hast du das in der stringliste auch noch drin!

nur was in der stringliste steht, wird dann auch eingetragen. allerdings finde ich deine lösung, das in dateien zu speichern, etwas schlecht! würde nicht eine db besser sein?

damit entgehst du auch dem totalen dateien crash, wenn du irgendwann mal 1000 fragen hast.

mfg matthias

_________________
Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mo 25.12.06 18:02 
db?

//Edit: Ah jetzt LoL... naja da hab ich noch weniger Ahnung ;-)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.12.06 18:06 
Das ist aber auch nicht unbedingt schwierig, es gibt da gute Freeware-Units dazu...

Bei denen musst du nicht viel über DBs wissen. Nur was eine DB eigentlich ist ;-) und ein bisschen mehr.
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mo 25.12.06 18:13 
ja aber ich denke fürs erste reicht die 0815-Version
Da gehts nämlich noch weiter bei meiner "Problemsammlung" ^^

Jetzt soll das Programm ja so funktionieren, dass für jedes neue Thema eine neue .txt datei angelegt werden soll, muss ich dann für jedes Thema eine neue StringListe machen, wenn ja, ein array of StringLists (wenns sowas gibt...) also ein dynamisches hm ich weiß nicht wie ich des jz alles erkläre soll...
man kann leicht nachvollziehen was ich will wenn man folgt vorgeht:

Neues Projekt in Delphi
Alt+F12 drücken.
das einfügen:
ausblenden volle Höhe 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:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
object NewQuestion: TNewQuestion
  Left = 344
  Top = 502
  AutoScroll = False
  BorderIcons = [biSystemMenu, biMinimize]
  Caption = 'Neue Frage....'
  ClientHeight = 266
  ClientWidth = 476
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 0
    Top = 0
    Width = 123
    Height = 13
    Caption = 'Titel des Thema eingeben'
  end
  object Label2: TLabel
    Left = 0
    Top = 80
    Width = 106
    Height = 13
    Caption = 'Neue Frage eingeben:'
  end
  object Label3: TLabel
    Left = 224
    Top = 80
    Width = 148
    Height = 13
    Caption = 'Antwort für die Frage eingeben:'
  end
  object TopicEdit: TEdit
    Left = 0
    Top = 24
    Width = 321
    Height = 21
    TabOrder = 0
    Text = 'Thementitel'
    OnClick = TopicEditClick
  end
  object ShowTopicsBtn: TButton
    Left = 368
    Top = 8
    Width = 57
    Height = 25
    Caption = '---->'
    TabOrder = 1
    OnClick = ShowTopicsBtnClick
  end
  object QuestionMemo: TMemo
    Left = 0
    Top = 96
    Width = 185
    Height = 89
    Lines.Strings = (
      'Frage')
    TabOrder = 2
  end
  object AnswerMemo: TMemo
    Left = 224
    Top = 96
    Width = 185
    Height = 89
    Lines.Strings = (
      'Antwort')
    TabOrder = 3
  end
  object OKBtn: TButton
    Left = 272
    Top = 224
    Width = 75
    Height = 25
    Caption = 'Übernehmen'
    TabOrder = 4
    OnClick = OKBtnClick
  end
  object CancelBtn: TButton
    Left = 368
    Top = 224
    Width = 75
    Height = 25
    Caption = 'Abbrechen'
    TabOrder = 5
    OnClick = CancelBtnClick
  end
  object TopicsMemo: TMemo
    Left = 480
    Top = 16
    Width = 185
    Height = 233
    TabOrder = 6
  end
  object UnShowTopicBtn: TButton
    Left = 368
    Top = 8
    Width = 57
    Height = 25
    Caption = '<----'
    TabOrder = 7
    Visible = False
    OnClick = UnShowTopicBtnClick
  end
end


dann den quellcode mit diesem ersetzen:

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:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
unit Unit2;

interface

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

type
  TNewQuestion = class(TForm)
    TopicEdit: TEdit;
    Label1: TLabel;
    ShowTopicsBtn: TButton;
    Label2: TLabel;
    QuestionMemo: TMemo;
    Label3: TLabel;
    AnswerMemo: TMemo;
    OKBtn: TButton;
    CancelBtn: TButton;
    TopicsMemo: TMemo;
    UnShowTopicBtn: TButton;
    procedure ShowTopicsBtnClick(Sender: TObject);
    procedure UnShowTopicBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure OKBtnClick(Sender: TObject);
    procedure TopicEditClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  NewQuestion: TNewQuestion;

implementation

{$R *.dfm}

procedure TNewQuestion.ShowTopicsBtnClick(Sender: TObject);
begin
if NewQuestion.Width = 484 then
  begin
  NewQuestion.Width:= 680;
  ShowTopicsBtn.Caption:= '<----';
  ShowTopicsBtn.Visible:= false;
  UnShowTopicBtn.Visible:= true;
  end;


end;


procedure TNewQuestion.UnShowTopicBtnClick(Sender: TObject);
begin
if NewQuestion.Width = 680 then
  begin
  NewQuestion.Width:= 484;
  ShowTopicsBtn.Caption:= '---->';
  UnShowTopicBtn.Visible:= false;
    ShowTopicsBtn.Visible:= true;;
  end;

end;

procedure TNewQuestion.CancelBtnClick(Sender: TObject);
begin
NewQuestion.Visible:= false;
end;

procedure TNewQuestion.OKBtnClick(Sender: TObject);
var
  tmp: TStringList;
begin
  tmp := TStringList.Create;
  tmp.SaveToFile(ExtractFilePath(ParamStr(0)) + TopicEdit.Text + '.txt');
  tmp.Free;
end;

procedure TNewQuestion.TopicEditClick(Sender: TObject);
begin
if TopicEdit.Text = 'Thementitel' then
  begin
  TopicEdit.Text:= Trim('');
  end;
end;

end.


und dann kann man sich genau mein problem anschaun
Matthias-K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 271

Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
BeitragVerfasst: Mo 25.12.06 18:52 
also,

das trim is unsinnig.

desweiteren, die stringliste wird ja ge'free't.

also wird nicht für alles einen neue stringlist angelegt, sindern nur jedesmal eine, die dann wieder gelöscht wird!

ich seh da kein problem.

wenn du magst, schreib ich dir mal ein beispielprogramm, wie ich das machen würde! ganz einfach, mit standart kompos aus delphi 5! oder 7, wie du auch magst.

pn an mich, inklusive 1-2 tage ruhepause.

mfg matthias

_________________
Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 25.12.06 19:35 
Hast Du Dir schon mal Ini Dateien angeschaut, sind sehr einfach aufgebaut und wenns nur erstmal 0815 sein soll und keine DB.

[Mathe]
Frage=
Antwort=

[Physik]
Frage=
Antwort=

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 25.12.06 19:42 
Genau wie Blackheart es sagt siehts aus. Wäre nicht Weihnachten, dann hätte ich es schon selber geschrieben. Du suchst nach dem INI-Eintrag mit einem bestimmten Wert. Ist der falsch, dann wird der Standard-Wert zurückgeliefert und zwar in diesem Fall "falsche Antwort". :lol:

_________________
Gruß
Hansa
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Di 26.12.06 01:27 
user profile iconBlackheart666 hat folgendes geschrieben:
Hast Du Dir schon mal Ini Dateien angeschaut,


Nein, kann ich nichts mit anfangen mit Ini...
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 26.12.06 01:32 
Seit Blackhearts Antwort und meinem Kommentar sind ziemlich genau 6 St. vergangen. Das dürfte ausreichen, Delphi zu starten und <F1> zu drücken. 8)

_________________
Gruß
Hansa
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 26.12.06 10:17 
Hier wird das sehr gut erklärt und im DF findet man auch massig zu Ini.
www.kuknet.de/tutorial1.pdf

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)