Autor |
Beitrag |
ConditionZero
      
Beiträge: 190
Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
|
Verfasst: 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.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: 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 
      
Beiträge: 190
Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
|
Verfasst: 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
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 25.12.06 17:22
Du kannst zum Beispiel eine TStringList benutzen: 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 
      
Beiträge: 190
Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
|
Verfasst: Mo 25.12.06 17:45
ok es klappt bis auf die tatsache das, wenn ich
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
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
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
|
Verfasst: 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 
      
Beiträge: 190
Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
|
Verfasst: Mo 25.12.06 18:02
db?
//Edit: Ah jetzt LoL... naja da hab ich noch weniger Ahnung 
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 190
Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
|
Verfasst: 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:
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:
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 public 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
      
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
|
Verfasst: 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
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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". 
_________________ Gruß
Hansa
|
|
ConditionZero 
      
Beiträge: 190
Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
|
Verfasst: Di 26.12.06 01:27
Blackheart666 hat folgendes geschrieben: | Hast Du Dir schon mal Ini Dateien angeschaut, |
Nein, kann ich nichts mit anfangen mit Ini...
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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. 
_________________ Gruß
Hansa
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: 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)
|
|
|