![]() |
Wörterbuch Datei
Hi, ich wusste nicht genau, wohin mit diesem Beitrag...
Also ich habe mit Delphi 5 einen Vokabektrainer programmiert. Beim Start greift dieser auf eine Datei zu, in der die abzufragenden Vokabeln gespeichert sind. Gespeichert wird folgendermaßen: DeutschEnglischDeutsch.txt: Deutsch1 Englisch1 Deutsch2 Englisch2 usw. Jetzt meine Frage: Weiß jemand, wo man eine solche Datei herunterladen kann? Kann von mir aus auch so sein: Deutsch1#Englisch1 Deutsch1/Englisch1 etc. Hauptsache nicht Deutsch1::Englisch1Deutsch2::Englisch2 So eine hab ich gefunden, aber die auseinander zu nehmen ist ein bisschen zu aufwendig... Liebe Grüße! |
Re: Wörterbuch Datei
für
Delphi-Quellcode:
kann man ganz einfach eine TStringList nehmen
Deutsch1=Englisch1
Deutsch2=Englisch2 ... .Name und .Value auch für diese
Delphi-Quellcode:
ist diese zu gebrauchen
Deutsch1
Englisch1 Deutsch2 Englisch2 gerade Indize = Deutsch ungerade Indize (deutscher Index + 1) = Englisch |
Re: Wörterbuch Datei
Zitat:
|
Re: Wörterbuch Datei
@himitsu: Die benutze ich schon. Der Benutzer kann auch eine eigene Datei erstellen usw. Nur habe ich keine Lust die Dateien alle selber zu machen. Prinzipiell klappt das ja.
Ich guck mal mit dem Hex nach... |
Re: Wörterbuch Datei
Delphi-Quellcode:
Falls da kein Trennzeichen zwischen steht:
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; begin Caption :=''; for i := 1 to Pred(Length(Edit1.Text)) do if (Edit1.Text[i] > 'Z') and (Edit1.Text[i+1] < 'a') then Caption := IntToStr(i+1); end; Großbuchstabe folgt direkt auf einen Kleinbuchstaben -> hier fängt neuer Begriff an (unwahrscheinlich weil unsauber, aber nicht ausgeschlossen). Oder stehen da wirklich Zahlen mit in der Datei? Schwierig zu beurteilen ohne einen Ausschnitt der echten Datei zu sehen. |
Re: Wörterbuch Datei
Vermutlich hatte er die Datei nur mit'm Notepad geöffnet und in der Datei sind nur Linux-Umbrüche (#10) drin, welcher der Notepad (und auch andere "Editoren") nicht versteht.
|
Re: Wörterbuch Datei
Ausserdem soll es wohl im Eingangsposting "herunterladen" und nicht "laden" heissen. Einfach mal nicht bedeutungsverändernd abkürzen erspart Missverständnisse wie im drauf folgenden von Himi.
|
Re: Wörterbuch Datei
Nee, Notepad geht, hatte noch einen anderen Editor benutzt
Hab jetzt also Deutsch::Englisch Jetzt möchte ich mir ein Programm machen, dass diese Datei einmal komplett umschreibt.
Delphi-Quellcode:
var
i:integer;//Zählt die Zeilen i2:integer;//Zählt in den Zeilen von Zeichen zu Zeichen SL:TStringlist; begin SL := TStringList.Create; Try Try SL.LoadFromFile('C:\Users\Alt.txt');//Datei wird in die Liste geladen For i := 1 to SL.Count-1 do //Solange, bis das Ende der Liste erreicht ist begin for i2:=1 to {Länge der aktuellen Zeile i} do begin if {Das i2-te Zeichen aus der aktuellen Zeile}=(':') then begin {Ersetze das Leerzeichen davor, das aktuelle Zeichen, das Zeichen danach (auch ':') und das Leerzeichen danach durch einen Zeilenumbruch Aus Hallo :: Hello soll werden Hallo hello} end; gewisse ends und finallys... SL.SaveToFile('C:\Users\Neu.txt'); end; |
Re: Wörterbuch Datei
Da wäre StringReplace eine einfache Option.
Delphi-Quellcode:
var
SL:TStringlist; begin if FileExists('C:\Users\Alt.txt') then begin SL := TStringList.Create; try SL.LoadFromFile('C:\Users\Alt.txt');//Datei wird in die Liste geladen SL.Text := StringReplace(SL.Text,' :: ',sLineBreak,[rfReplaceAll]); SL.SaveToFile('C:\Users\Neu.txt'); finally SL.Free; end; end; end; |
Re: Wörterbuch Datei
Soviele Kommentare sind nicht grad übersichlich und verbessern die Lesbarkeit des Codes nicht wirklich
Delphi-Quellcode:
Kennst du schon
for i2:=1 to {Länge der aktuellen Zeile i} do
begin if {Das i2-te Zeichen aus der aktuellen Zeile}=(':') then ![]() Und warum läßt du diese Datei nicht einfach so, wie sie ist? Macht sich Einfacher, wenn du sie z.B. irgendwann mal durch 'ne neuere Version ersetzt.
Delphi-Quellcode:
So und hast du alles ganz praktisch in der Stringliste
SL := TStringList.Create;
SL.LoadFromFile('C:\Users\Alt.txt'); SL.Text := StringReplace(SL.Text, ' :: ', '=', [rfReplaceAll]); und kannst via SL.Name[i] (deutsch) und SL.Value[i] (englisch) drauf zugreifen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz