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



BeitragVerfasst: Fr 18.07.03 16:15 
Hallo,

ich bin völliger Newbie in Delphi und stehe gerade vor einem großen Problem...ich habe eine Textdatei mit etwa 73.000 wörtern (es sind alle wörter für ein wörterbuch) und die würde ich gerne alle in eine db bringen aber wenn ich die alle eintippe bin ich in fünf jahren noch nicht fertig...habt ihr irgend eine lösung für mich? entweder dass man die mit einer schleife hineinbekommt oder macht das irgend ein db-tool???
ich bin am verzweifeln...bitte helft mir!!
danke

greedz
incredible
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 18.07.03 17:03 
Hallo,

die sieht die TextDatei denn aus? Wenn sie sinvoll Strukturiert ist (jedes Wort in einer eigenen Zeile, durch Komma getrennt oder so) sollte das absolut kein Problem sein.

Öffne die Deitei als Suche in: Delphi-Forum, Delphi-Library TEXTFILE und lese sie aus. Wie du die Daten in die DB bekommst kannst du hier nachlesen.
Wie du richtig vermutet hast läft das ganze dann in einer Schleife. Lese ein Wort -> Schreibe es in die DB -> Weiter so bis Dateiende erreicht.

Gruß
Klabautermann
incredible Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 18.07.03 17:53 
ja jedes wort ist in einer eigenen zeile(also keine beistriche) aber
wie gesagt ich bin ein großer noob und hab echt keine ahnung wie ich das mache oder wo ich meine infos finde!
mein wunsch:
ich will ein programm erstellen, indem man eine beliebige endung eingibt und jedes wort, mit dieser endung erhält und mein vorschlag wäre eben gewesen, ich bring die wörter alle in eine db und lese diese dann mit
ausblenden Quelltext
1:
2:
3:
SELECT *
FROM egal 
WHERE name LIKE '%_"endung"%'

aus...ist das eine schlechte idee?...könnte ich auch eventuell gleich aus der TextDatei suchen? und wäre die syntax richtig, wenn "endung" eine variable ist?
danke

greedz
incredible
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 18.07.03 19:53 
Hallo,
so schlecht finde ich die Idee nciht, gerade wegen der flexibilität von SQL in punkto SQL. Wenn du 'nen Anständigen Index setzt sollte auch die geschwindigkeit stimmen.

Wenn jedes Wort in einer Eigenen Zeile Steht wird das Importtieren besonders einfach.
Gehen wir davon aus, du hast schon ein Programm, welches mit der DB verbunden ist (ein einfaches Beispiel findest du hier), und dieses besitzt ein Tabellen Objekt mit Namen tblWords, welches mit der Wörtertabelle verknüpft ist. Die Tabelle selbst hat nur Zei spalten, einen Autoinc Index, der von der Datenbank selber verwaltet wird und die Spalte Begriff welche die Wörter an sich fassen soll.

Die Import Procedure könnte dann so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure ImportWods(aFileName : STRING);
  VAR
    f : TextFile;
    ActBegriff : STRING;
BEGIN
  IF FileExists(aFileName) THEN BEGIN
    AssignFile(f, aFileName);
    IF NOT tblWords.Active THEN
       tblWords.Open;
    Reset(f);
    WHILE NOT EOF(f) DO BEGIN
      ReadLn(f, ActBegriff);
      IF (Trim(ActBegriff) <> ''THEN BEGIN
        tblWords.Append;
        tblWords.FieldByName('Begriff').AsString := ActBegriff;
        tblWords.Post; 
      END// leerzeilen ausfiltern 
    END// Solange noch Wörter in der TextDatei vorhanden sind
    CloseFile(f);
  END// Datei Existiert
END;

Tippfehler musst du entschuldigen, da ich das nur in den Browser getippt habe. Aber mit der so aufgebauten Tabelle kannst du dann arbeiten.
Wenn du das Delphi DB-Konzept noch nicht verstanden hast kannst du neben den oben geposteten Link auch hier Tutorials finden.

Gruß
Klabautermann
incredible Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 19.07.03 19:22 
Danke sehr für deine Hilfe, doch ich glaube ich bin einfach zu blöd für Delphi. Ich hab mir heute etwa 20 Tutorials zur Datenbankprogrammierung durchgelesen aber bin immer noch nicht klüger daraus geworden. Ich kann deine Prozedur nicht ganz lesen, was bewirkt die genau?...Brauche ich eine Query oder einen Table-Komponente? Wie soll ich denn überhaupt die Oberfläche aufbauen?

Aber vielleicht sollte ich das mal lassen... :cry:

greedz
incredible
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 19.07.03 21:41 
Hallo,

das Beispiel arbeitet mit einer Tabellen Komponente.

Dir funktion öffnet eine Textdatei
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  IF FileExists(aFileName) THEN BEGIN 
    AssignFile(f, aFileName); 
    [...]
    Reset(f);

und liest diese Zeile für Zeile, is zum Dateiende, ein
ausblenden Delphi-Quelltext
1:
2:
WHILE NOT EOF(f) DO BEGIN 
      ReadLn(f, ActBegriff);

wenn die Aktuelle Zeile nicht leer ist
ausblenden Delphi-Quelltext
1:
IF (Trim(ActBegriff) <> ''THEN BEGIN					

dann schreibe die Aktuelle Zeile in die Tabelle, hierzu wird das Tabellenobjekt verwendet
ausblenden Delphi-Quelltext
1:
2:
3:
tblWords.Append; // Neuen Datensatz anlegen
        tblWords.FieldByName('Begriff').AsString := ActBegriff;  // Mit Wert füllen
        tblWords.Post; // Änderung in DB übernehmen

Am Ende wird noch die Datei geschlossen
ausblenden Delphi-Quelltext
1:
CloseFile(f);					


incredible hat folgendes geschrieben:
Ich hab mir heute etwa 20 Tutorials zur Datenbankprogrammierung durchgelesen aber bin immer noch nicht klüger daraus geworden.

Was verstehst du denn da nicht?

incredible hat folgendes geschrieben:
Wie soll ich denn überhaupt die Oberfläche aufbauen?

Du musst doch wissen, wie deine Oberfläche aussehen soll.

Gruß
Klabautermann
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Sa 19.07.03 21:54 
incredible hat folgendes geschrieben:
...Ich hab mir heute etwa 20 Tutorials zur Datenbankprogrammierung durchgelesen...Aber vielleicht sollte ich das mal lassen... :cry:

20 Stück am Tag :?: Dann hast Du keines richtig gelesen. Wenn dem so ist, dann lass es wirklich besser bleiben. Was Klabautermann da vorschlägt, ist ganz einfach: er liest den Inhalt einer Textdatei in eine Datenbank ein, um diese später zu bearbeiten. Desweiteren hat er auf seiner Seite echt einfache Beispiele.

P.S.: Hier wurden so 2-3 Tutos genannt, was ist mit dem Rest ?

_________________
Gruß
Hansa
incredible Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 23.07.03 23:13 
DANKE DANKE DANKE!!

Jetzt hab ich das endlich gecheckt und mich noch ein bisschen zusätzlich informiert! Hab mein gewolltes Program jetzt fertig und es läuft wunderbar...zumindest auf meinem System!! Ich weiß schon langsam bin ich nervig aber ich verstehe nicht, warum das nicht auf jedem anderen(zumindest-Windows-System)läuft, wenn ich doch eh die .exe und die datenbank exportiert habe?!?!? Es kommt jedesmal der Fehler: "An error occurred while attempting to initialize the Borland Database Engine(error $2108"! Und ich habe wirklich schon sehr viel herumprobiert nur leider komm ich nicht auf die Lösung!:(
Wäre nett wenn ihr mir noch ein allerletztes Mal(bei diesem Programm..*gg*) helfen könntet!!
Danke

greedz
incredible
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 24.07.03 00:38 
Das ist kein Wunder. Die BDE wird eben nicht mehr weiterentwickelt, deshalb benutze ich sie nicht und kann Dir keine Antwort geben. Die muß auf dem jeweiligen Rechner richtig instaliert sein. Tja, dann geht das altbewährte Thema los, welche DB ? :lol:

Wie kriege ich das alles in die EXE usw. :shock:

_________________
Gruß
Hansa
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 24.07.03 09:57 
Hallo,

hansa hat da völlig recht. Du hast eine DB-Anwendung aud basis der BDE geschrieben. Also musst du auch die BDE mit ausliefern, dies darfst du (aus kizensgründen), nur mit bestimmten Setup-Programmen und nur zusammen mit deiner Anwendung. Ein lizensiertes Setup Programm heißt Install-Shield Express und kann auf deiner Delphi CD gefunden werden. Dort müsste es eine Option geben um die BDE mit zunehmen.

Ansonsten musst du mal hier im Forum suchen.

Gruß
Klabautermann
Bruce
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 80



BeitragVerfasst: Do 24.07.03 10:33 
Also ich weiss nicht, ich muss jetzt doch mal eine Lanze für die BDE brechen ;)
Ich weiss ja, das die nicht mehr weiterentwickelt wird und Ihre Fehler hat und nichts für größere Projekte ist. Aber irgendwie kommen diese Argumente bei jedem Post, in dem die BDE nur erwähnt wird wie aus der Pistole geschossen.
Man muss doch auch mal die Verhältnismäßigkeit sehen. Bei dem was incredible hier macht würd ich ihm nichts anderes empfehlen. So lernt man das Grundprinzip der Datenbanken in Ruhe ohne sich mit der Implementierung irgendeiner anderen Datenbankengine rumzuschlagen. Und ich denke das Problem wie man die BDE mitinstalliert ist noch am schnellsten gelöst.
(@incredible: wie klabautermann schon sagt, in den Installshield-Dialogen findest Du eine Maske mit der Auswahl "BDE komplett", da einfach häkchen rein und alles weitere nur bestätigen, dann passt das. Das Gesamtprogramm wird dann zwar unverhältnismäßug gross, aber ich glaube darauf kommt es hierbei nicht an).
Und bei solchen "Progrämmchen" funktioniert die BDE doch auch einwandfrei.

Und noch grade zum Import der Daten: Wenn ich mit so was einfachem arbeite und hab ne Textdatei wie die beschriebene, dann öffne ich die in Excel und speichere Sie als DBase ab, dann kann ich damit arbeiten.
Na ja, hat vielleicht nicht jeder Excel (zumindest legal ;) ), aber wenn mach ich mir damit keine Arbeit.
Obwohl der andere Weg hat den vorteil, das man gleich wieder was dazu gelernt hat :)

Gruß, Bruce

EDIT: OOps :oops: geht ja um 73.000 Sätze, da rutschen wir mit Excel wohl knapp vorbei. Sorry, hatte ich schon wieder vergessen, man kannst Du denn nicht wie jeder Beginner mit drei Adressen anfangen? :lol:
Na ja, hauptsache was erzählt ... :cry:
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 24.07.03 12:16 
Hi,
Bruce hat folgendes geschrieben:
Man muss doch auch mal die Verhältnismäßigkeit sehen. Bei dem was incredible hier macht würd ich ihm nichts anderes empfehlen.

naja, wie du ja auch erwähntest ist die BDE unverhältnismäzig groß ;). Advantage-Local währe in sachen Distribution, Leistung, und Größe besser. Aber ich halte die BDE hier auch durchaus für geeignet, sonst hätte ich in meinen ersten Postings davor gewarnt ;).

Gruß
Klabautermann