AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Textdatei

Ein Thema von zapper54 · begonnen am 9. Mär 2010 · letzter Beitrag vom 9. Mär 2010
Antwort Antwort
zapper54

Registriert seit: 14. Nov 2009
28 Beiträge
 
Delphi 7 Enterprise
 
#1

Textdatei

  Alt 9. Mär 2010, 14:20
Hallo!

Ich habe folgendes Problem: Ich möchte gerne eine "Vokabelsuchmaschine" basteln. Die Vokabeln sollen in einet txt datei gespeichert werden. Nun soll eine Stringvariable die Vokabel aus dem Edit Feld (in das eingegeben wird) übernehmen. Und ab diesem Punkt kommt das Problem:

Nun soll einen andere Stringvariable solange die Textdatei durchsuchen (Zeile für Zeile) bis sie die Deutsche Vokabel vorfindet (Wenn String1= String2 ist). dann soll sie noch eine Zeile weiter lesen, und dann den Inhalt der Zeile unter dem deutschen Wort in einem Memo anzeigen.

Meine Fragen also:

1. Wie bringe ich die Stringvariable dazu, die Textdatei Zeile für Zeile auszulesen?

2. Wie kann ich überprüfen, wann String1 und String2 gleich sind?

3. Wie bringe ich sie dazu, nachdem sie das Wort gefunden hat, den Inhalt der nachfolgenden Zeile in ein Memofenster zu übertragen?

Ich danke schoneinmal im Vorraus für eure Antworten.

MfG

zapper54
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Textdatei

  Alt 9. Mär 2010, 14:31
Hallo,

Textdateien sind dafür sicher suboptimal. Eine Datenbank wie Firebird Embedded wäre sicher effizienter. Aber als Übung funktioniert es natürlich auch mit Textdateien.
Ganz grob aus dem Kopf:

Delphi-Quellcode:
var
  myFile: TextFile;
  SearchVoc: string;
  CurrentVoc: string;
begin
  AssignFile(myFile, 'Pfad zur txt');
  SearchVoc := 'gesuchte vokabel';
 
  while not Eof(myFile) do
  begin
    ReadLn(myFile, CurrentVoc);

    if CurrentVoc = SearchVoc then
    begin
      if not Eof(myFile)
      begin
        ReadLn(myFile, CurrentVoc);

        // gesuchte Vokabel: CurrentVoc

        break;
      end;
    end;
  end;
 
  CloseFile(myFile);
end;
Ich habe schon Jahre nichts mehr mit Textdateien gemacht und hoffe, dass es nicht komplett falsch ist.

Grüße, Matze

Edit: "break" eingefügt, damit die Textdatei nicht immer komplett durchlaufen wird.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Textdatei

  Alt 9. Mär 2010, 14:35
@Matze: Sollte so passten! Man könnte noch den IOResult nach dem Reset abfragen ({$I+} und {$I-} nicht vergessen), aber das kommt immer auf den Fall darauf an.

@zapper54: Schau dir vielleicht mal Ini-Dateien an. Das wäre vielleicht ein besserer Ansatz zum Speichern.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Aussagekräftiger Titel

  Alt 9. Mär 2010, 14:41
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichterst du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Textdatei

  Alt 9. Mär 2010, 15:18
zunächst schlage ich vor nicht so zu speichern:

deutsches Wort
englisches Wort
deutsches wort
englisches Wort

sondern so:
deutsches wort = englisches Wort
deutsches Wort = englisches Wort

oder da es selten eine 1:1 Beziehung zwischen den Vokabeln gibt eine Datenbank (embedded).

mit einer TStringlist ist das doch kein Problem bis (ca. 30-50 MB)
Delphi-Quellcode:
VokListe:=Tstringlist.create;
Vokliste.loadfromFile('meineVokabeldatei.txt');
...
engVok:=VokListe.Indexof(deVok)+1; //wenn die englische Vokabel unter der deutschen Vokabel steht
Da fehlen natürlich noch Fehlerüberprüfungen und was sonst noch zu einem ordentlichen Programm gehört.

@matze
So würde ich nur arbeiten wenn das wirklich ein dicker Brocken wäre (und natürlich mit setTextbuf!)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Textdatei

  Alt 9. Mär 2010, 15:50
Zitat von p80286:
@matze
So würde ich nur arbeiten wenn das wirklich ein dicker Brocken wäre (und natürlich mit setTextbuf!)
Wie gesagt, ich würde damit gar nicht arbeiten (genauso wenig wie mit deinem Source), sondern mit einer Embedded-Datenbank.
Dennoch wollte ich ihm zeigen, wie man mit Textdateien arbeiten kann, da er das gefragt hat. Das das keine gute Lösung für den produktiven Einsatz ist, schrieb ich bereits.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz