| Autor |
Beitrag |
t3h
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 13:13
Hallo zusammen ich hab die SuFu schon benutzt, allerdings nichts gefunden das ich wirklich gebrauchen konnte.
Ich möchte ein Programm schreiben das alle lateinische Wörter die ich aus einer .txt-Datei auslese in einem TStringList angezeigt werden die Datenstruktur der .txt-Datei sieht so aus
Fremdwort1 Bedeutung1 Stammform, Deklination etc.
Fremdwort2 Bedeutung2 Stammform, Deklination etc.
wenn man nun ein Element der der TSTringlist anklickt sollen die entsprechende Bedeutung angezeigt werden.
Später möchte ich noch eine Suchfunktion einbauen bzw eine Funktion die zufällig Wörter raussucht. Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Fr 12.10.2007 um 14:31
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: Fr 12.10.07 14:14
also, die Struktur, die du benutzt eignet sich nicht so gut (meine ist auch nicht die beste, aber einfacher einzulesen)...
Mach es lieber so:
Fremdwort1
Bedeutung1
Stammform, Deklination etc. ?Soll das in eine Zeile, oder auch aufgeteilt?
Dann gehts weiter...
Dann kannst du mir ReadLn Zeile für Zeile in verschiedene Bereiche einlesen...
Ich habe bei meinem VokabelTrainer zwei Arrays, einen fürs Fremdwort, einen für die Übersetzung und dann sage ich einfach immer
Delphi-Quelltext 1: 2:
| ReadLn(f, array1[i]); ReadLn(f, array2[i]); |
OK, ist etwas komplizierter, da die Datei erst noch dekodiert wird, aber nach dem Prinzip...
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 14:32
Titel: Leider
Leider kann ich mir die Struktur nicht aussuchen.
Die Stammformen etc soll alles in die gleiche Zeile
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 12.10.07 14:35
Titel: Re: Leider
Moin und  im Forum!
t3h hat folgendes geschrieben: | Leider kann ich mir die Struktur nicht aussuchen.
Die Stammformen etc soll alles in die gleiche Zeile |
Hast du ein konkretes Beispiel? Dann zeig uns doch mal ein paar Zeilen oder häng die Datei hier als Anhang rein. So ist es wesentlich leichter zu erklären, wie man das vernünftig als Liste in Delphi abbilden kann.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 15:08
Titel: klar
im anhang ist die datei
Einloggen, um Attachments anzusehen!
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Fr 12.10.07 15:10
wie wärs so:
1)
Type definieren
Delphi-Quelltext 1: 2: 3: 4: 5:
| type TTest = Class(TObject) Fremdwort : String; Bedeutung : String; ... end; |
2)
in die Stringlist einlesen etwa so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var fw : TTest; begin aa := TTest.Create; aa.Fremdwort := 'Rödelprömp'; aa.bedeutung := 'Blödsinn'; sl.AddObject('Anzeigestring', TObject(aa)); ... |
3)
beim auslesen dann
Delphi-Quelltext 1: 2: 3: 4:
| var fw : TTest; begin fw := Stringlist.items.objects[stringlist.itemindex]; AnzeigeBedeutung.Text := fw.Bedeutung; |
habs nur aus dem kopf geschrieben, müsste aber in etwa so gehen
Moderiert von Narses: Delphi-Tags hinzugefügt
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 12.10.07 15:36
Titel: Re: klar
Moin!
t3h hat folgendes geschrieben: | | im anhang ist die datei |
 Holla, das wird aber nicht einfach sein, diese Datei einzulesen, da der Zeilenaufbau ziemlich variabel ist...
Muss die Datei genau so wie sie jetzt ist, verarbeitet werden? Oder dürftest du auch den Inhalt editieren (also den Aufbau anpassen), solange der Wortschatz erhalten bleibt?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 15:39
Titel: Ja
Hab gerade nochmal mit dem Lehrer geredet darf den Aufbau auch ändern
Zuletzt bearbeitet von t3h am Fr 12.10.07 15:47, insgesamt 1-mal bearbeitet
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 12.10.07 15:44
Titel: Re: Ja
Moin!
t3h hat folgendes geschrieben: | | Hab gerade nochmal mit dem Lehrer geredet darf den Aufbau auch ändern |
Fein!  Dann mach dir mal Gedanken, wie der Zeilenaufbau aussehen sollte, damit man das mit Delphi "gut" verarbeiten kann.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 16:10
Titel: mhm
wohl am besten mit einem Zeichen das nicht oft verwendet wird wie & oder so, dann könnte ich ja & als delimiter festsetzen aber wie genau krieg ich dann den delimited text in ne andere variable
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Fr 12.10.07 17:10
Hallo!
Mit Copy, Pos, Delete, etc kannst du Strings bearbeiten. Sinnvoll könnte auch der folgende FAQ Beitrag sein: ...einen unterteilten String in ein Array schreiben?
Gruß,
Tino
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 17:29
Titel: keine Ahnung
Hi ich hab leider keine Ahnung wie man das Fremdwort und das ergebnis (getrennt durch x-beliebiges-Zeichen) in zwei verschiedene Arrays bringen kann. Nen Denkanstoß oder sowas in der Richtung wäre sehr nett.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Fr 12.10.07 17:32
Zeig mal den Sourcecode den du schon hast.
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Fr 12.10.07 17:38
Titel: so gut wie keinen
Ich habe noch so gut wie garkeinen Source-Code bis jetzt lade ich nur die Liste direkt der nächste Schritt ist ja die eine Seite mit den Fremdwörter zu füllen und die memobox auf der anderen seite mit der bedeutung des angwählten Listen eintrags
---
Ich hab mir jetzt das ganze so überlegt das ich die ganze Liste in einem Array of String durch Explode getrennt zuteile dannach teil ich per i mod 2 = 1/0 das in ganze in zwei arrays (wenn 1 dann dem Fremdwort-array wenn 0 dem übersetzungs-array) auf. Was haltet ihr von der Idee?
Moderiert von Narses: Beiträge zusammengefasst.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 12.10.07 23:01
Moin!
Ich zeig mal nur einen kleinen Ausschnitt aus der Wörterbuchdatei:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| a, ab (Präp + Abl.) von ... her abesse, absum, afui abwesend sein, fehlen abire, abeo, abii, abitum weggehen ac = atque und accedere, accedo, -cesi, -cessum herbeikommen, hinzukommen accidere, accido, accidi geschehen, sich ereignen accipere, accipio, -cepi, -ceptum annehmen, bekommen acies, aciei f Schlachtordnung ad (Präp. + Akk.) zu, an, bei, nach adducere, adduco, -duxi, ductum heranführen, veranlassen adeo (Adv.) so sehr adesse, adsum, adfui (m. Dat.) da sein, helfen adhuc (Adv) bis jetzt, noch adire, adeo, adii, aditum hinzugehen adventus, adventus m Ankunft aedis, aedis f Tempel; Pl. Haus aequus, -a, -um eben, gleich, gerecht | Soll das etwa so getrennt werden? Dann musst du aber die gesamte Datei erstmal ordentlich im Editor überarbeiten, sonst wirst du das niemals mit Delphi zerpflückt kriegen...
Die Idee mit dem Trennzeichen ist gut, ich würde aber z.B. '|' nehmen. Was du dann allerdings mit den wie oben gezeigt markierten Teilstrings anfangen willst, ist mir noch unklar. Wie willst du mit sowas umgehen: "aequus, -a, -um"?
t3h hat folgendes geschrieben: | | Hab gerade nochmal mit dem Lehrer geredet darf den Aufbau auch ändern |
Sag doch mal etwas mehr dazu: bei was für einer "Hausaufgabe" sollen wir denn hier "helfen"?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: Sa 13.10.07 01:50
Narses also eigentlich würde es auch so gehn
Zum erkennen wann die deutsche Bedeutung kommt kann man das Komma nehmen.
Wenn nach dem ersten Word kein Komma kommt, fängt gleich die deutsche Bedeutung an, sonst es dann wenn 2 Wörter ohne Komma aufeinander folgen..
greetz
_________________ Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
|
|
t3h 
      
Beiträge: 20
|
Verfasst: Sa 13.10.07 14:30
Titel: So
Hier ist nochmal der Vokabel Anhang (überarbeitet)
und mein Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| begin opendialog1.Execute; VocFile := TStringList.Create; VocFile.Clear; VocFile.LoadFromFile(opendialog1.FileName); SetLength (VocList,VocFile.Capacity); SetLength (VocList[1],2); VocList[1] := explode ('|',VocFile[1]); memo1.Text := VocList[0,1]; end; |
Allerdings spuckt das ne Fehlermeldung aus kann mir einer erklären wieso/was ich bessermachen kann)?
---
ist übrigens keine hausaufgabe sondern ein programm das ich freiwillig / für meinen Leiten-Kurs programmieren will
Moderiert von Narses: Beiträge zusammengefasst.
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Sa 13.10.07 21:31
welche fehlermeldung spuckt er denn aus?
und benutze opendialog.execute besser so, damit verhinderst du dass dein programm etwas macht, wenn der benutzer den opendialog abbricht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| begin if opendialog1.Execute then begin VocFile := TStringList.Create; VocFile.Clear; VocFile.LoadFromFile(opendialog1.FileName); SetLength (VocList,VocFile.Capacity); SetLength (VocList[1],2); VocList[1] := explode ('|',VocFile[1]); memo1.Text := VocList[0,1]; end; end; |
|
|