Autor Beitrag
derschläfer
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 03.03.17 00:48 
Hallo allerseits!

Ich möchte einen einfachen Vokabeltrainer programmieren, der auf eine XML Datenbank zugreift.
Das Hinzufügen, Abspeichern und Laden in diese Datenbank habe ich schon hinbekommen mit einem DBGrid + Navigator und einem clientdataset + Datasource.

Von Datenbanken habe ich aber leider wenig Ahnung, also sorry wenn die Frage ein bisschen dumm ist, aber wie kann ich jetzt die Strings aus den zwei Spalten ansprechen, abfragen usw?
ich komme damit leider garnicht weiter, obwohl es doch simple Befehle sein müssten?

Achja und ich hätte es mir so vorgestellt, dass die Vokabeln einfach abgefragt werden, und mit einem button ein neues Fenster aufgeht(wie?) mit dem Grid um neue Vokabeln hinzuzufügen usw.

Danke schonmal im Vorraus :)

hier der bisherige Quelltext

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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ExtCtrls, DBCtrls, Grids, DBGrids, DBClient, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    ClientDataSet1Russ: TStringField;
    ClientDataSet1Deu: TStringField;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  clientdataset1.FileName := ExtractFilePath(ParamStr(0))+'vok.xml';
  clientdataset1.SaveToFile(clientdataset1.FileName, dfXML);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  clientdataset1.FileName := ExtractFilePath(ParamStr(0))+'vok.xml';
  if fileexists(clientdataset1.FileName) then
    clientdataset1.LoadFromFile(clientdataset1.FileName)
    else
      clientdataset1.CreateDataSet;
end;

end.


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2165
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Fr 03.03.17 05:41 
Guten Morgen derschläfer und Willkommen,

bitte sei so gut und formatier' den Quelltext leserlicher. Unter deinem Beitrag ist rechts unten ein Stift-Button zum Anklicken. Damit kannst du den Beitrag editieren und den Codeauschnitt entsprechend setzen:

ausblenden Quelltext
1:
[delphi]Codeausschnitt[/delphi]					

Danke!

An den Inhalt kommst du über das
ausblenden Delphi-Quelltext
1:
2:
DataSet.Fields[0].Value // Fields[0] = erste Spalte
DataSet.Fields[0].Text


Davor muss noch entsprechend navigiert werden, entweder über deinen DBNavigator, oder auch über das DataSet:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
DataSet.First // Sprung in die erste Zeile
DataSet.Next // nächste Zeile
DataSet.Previous // vorherige Zeile
DataSet.Last // letzte Zeile


Wie man in eine bestimmte Zeile mit dem DataSet springt, weiss ich gerade nicht.
Für gewöhnlich nutzt man dafür eine T...Connection, T...Query oder eine T...Table, setzt eine SQL-Anweisung und holt sich den entsprechenden Eintrag.
Das wird hierbei nicht so einfach gehen, da es ein XML-Dokument ist und keine Datenbank in dem Sinne.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
derschläfer Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 03.03.17 18:07 
Vielen Dank für die schnelle und ausführliche Antwort!
Okay wegen des Quellcodes kopieren weiß ich nun bescheid.

also eignet sich ei XML Dokument für meinen zweck nicht? habe leider wenig Ahnung von Datenbanken da ich noch Anfänger bin,
aber würde das schon sehr gerne umsetzen.

LG
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2165
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Fr 03.03.17 20:04 
Gern geschehen.
Die Umsetzung mit XML ist möglich und eignet sich auch gut, wenn die Menge der Werte überschaubar ist, ansonsten dauert das Lesen, Schreiben und Suchen der Werte spürbar länger, als mit einer Datenbank.
Wenn du es nun vorziehst mit einer Datenbank zu arbeiten, dann würde ich dir persönlich zu SQLite raten. Sie beinhaltet eine kleine DLL, die du im jeweiligen Projekt mitführen musst, und mehr nicht.
Das steuern jedoch benötigt leider Dritt-Komponenten, da ADO und BDE mit SQLite nichts anfangen können.
Dazu empfehle ich dir die ZEOS-Komponenten.
SQL-Anweisungen in Verbindung mit SQLite findest du hier

Sollte es Probleme beim Installieren der Komponenten oder mit dem Umgang der Datenbank geben, gib einfach bescheid, und wir gehen es langsam und verständlich durch.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: So 05.03.17 03:14 
Wenn es sich hier, wie vermutet um ein Lehrprojekt handelt, ist eine SQL-Lite Datenbank wohl etwas übertrieben.
Zumal für einen Vokabeltrainer eine XML-Datei wohl nicht an seine Grenzen kommen wird.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2165
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: So 05.03.17 03:29 
Inwiefern wäre SQLite übertrieben? Ist sie schwieriger zu handhaben als andere Datenbanken? Und welcher Grenzwert wäre das in etwa? Meine Japanisch-Vokabeln sind schon jenseits von 5000 Wörtern. Würdest du sagen, das wäre noch vertretbar für eine XML Nutzung?

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

Für diesen Beitrag haben gedankt: Boldar
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Do 09.03.17 17:43 
Wie gesagt - es hängt wohl von dem geplantem Umfang ab. 5000 Wörter sind aber nun wirklich kein Problem für eine ordentliche XML-Implementierung.
Für ein ernsthaftes Projekt ist eine Datenbank wie SQLite sicherlich Mittel der Wahl - aber da schon im Titel "einfacher Vokabeltrainer" steht, wollte ich auch einfachere Möglichkeiten aufzeigen.
Denn für jemanden, der mit SQL noch keine Erfahrungen hat, ist der Einstieg da nicht so einfach. Ein Profi wird sicherlich mit SQLite schneller ans Ziel kommen als mittels XML.

Für diesen Beitrag haben gedankt: Frühlingsrolle
derschläfer Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 15.03.17 16:59 
Hallo Leute und erstmal danke für die weiteren Antworten !

Es handelt sich nicht um ein Lernprojekt, sondern nur des Interesses wegen,
und weil ich derzeit neben Delphi auch Russisch lerne, daher dachte ich dass sich das anbietet.
Jedoch habe ich leider aktuell andere Delphi Projekte zu erledigen, diese sind Lernprojekte, also haben Vorrang...

Wenn das geschafft ist kann ich mich hoffentlich der Datenbank widmen, worin ich aber noch ein absoluter newbie bin:D

Gruß!