AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Suchen nach jahren in einer Db

Ein Thema von mimi · begonnen am 26. Mär 2006 · letzter Beitrag vom 2. Apr 2006
Antwort Antwort
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Suchen nach jahren in einer Db

  Alt 26. Mär 2006, 18:11
Hallo,
ich habe mir die Freeware DB von Cd titeln runtergeladen.
jetzt habe ich eine index datei erstellt. die so aufgebaut ist:
DisId|Titel|Jahr|MusikRichtung

jetzt wollte ich folgendes machen:
ich möchte erfahren z.b. welche cd Titel im jahr 2004 erschienen sind also habe ich folgende procedure geschrieben:
Delphi-Quellcode:
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  Text1,Text2:TextFile;
  str,line,s,s2:String;
  p,i,z,index,l:Integer;
  test:TListItem;
begin
  ListBox2.Clear;
  Listview1.Clear;
  AssignFile(Text1,Edit5.Text);
  Reset(Text1);

  AssignFile(Text2,Edit1.Text);
  Reset(Text2);

  p:=-1; z:=0;
  Label9.Caption:='Los...';
  Label9.Update;
  Label9.Repaint;

  // Die richtige Position finden
  while not EOF(Text1) do begin
    if (c2 = True) or (cancel = True) then break;
    Application.ProcessMessages;
    ReadLN(text1,str);
    if Edit2.Text <> 'then begin // Disc-ID
      if pos(edit2.text,str) > 0 then begin
        s:=GetToken(str,'|',2); // Position auslesen
        break;
      end;
    end;

    index:=0; i:=0;
    if Edit4.Text <> 'then begin
      if pos(edit4.text,str) > 0 then begin
        index:=StrToInt(GetToken(str,'|',2));
        while not EOF(text2) do begin
          if (cancel = True) then break;
          Application.ProcessMessages;

          Readln(text2, line);
          inc(i);
          if i >=index then begin
          // if pos('DISCID',line) > 0 then
           // ShowMessage(line + #13 + str);

            if Pos(GetToken(str,'|',1),line) > 0 then begin
              ListView1.Items.Add;
              ListView1.Items[ListView1.items.count-1].Caption:=GetToken(line,'=',2);
            end;

            if (Pos('DTITLE',line) > 0) and (z = 0) then begin
              ListView1.Items[ListView1.items.count-1].SubItems.Add(GetToken(line,'=',2))
            end;

            if (Pos('DTITLE',line) > 0) and (z = 1)then ListView1.Items[ListView1.items.count-1].SubItems.Add(GetToken(line,'=',2));


            if Pos('DYEAR',line) > 0 then begin
              ListView1.Items[ListView1.items.count-1].SubItems.Add(GetToken(line,'=',2));
            end;
            if Pos('DGENRE',line) > 0 then begin
              ListView1.Items[ListView1.items.count-1].SubItems.Add(GetToken(line,'=',2));

              break;
            end;

{              if Pos('TTITLE',line) > 0 then begin
                str:=Copy(line,7,7);
                ListBox2.items.Add(str + ' ' + GetToken(line,'=',2));
              end;}

       // end;
          end;
        end;
      end;
    end; // if edit4 <> ''
  end;
  Label9.Caption:='gefunden...';
  Label9.Update;
  Label9.Repaint;
ich hoffe da blick jemmand durch:
Ich öffne zuerst die index datei in der suche ich die angaben jahres zahle habe ich die suche ich in der zweiten datei(in der eigentlichen db) die angeben position rauß. Und sobalt ich die habe füge ich die daten der ListView hinzu. problem ist jetzt er fügt nur ein eintrag hinzu. schreibe ich jetzt bei DJahr ein ShowMessage hin sehe ich das dort die falschen jahre angezeigt werden.

Ich hoffe einer kann mir ein kleinen tip geben was ich falsch gemacht habe. wahrscheinlich nur ein kleiner gedanken fehler. Frag mich aber nicht welcher.
Vielen dank im vorauß !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Suchen nach jahren in einer Db

  Alt 26. Mär 2006, 20:25
Also was ist denn das für eine Datenbank ?

Wenn irgendwie geht, versuch über SQL darauf zuzugreifen, denn da wirds bei deiner gegebenen Spaltenangabe wirklich simpel:
select * from AlleLieder where Jahr = 2004
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Suchen nach jahren in einer Db

  Alt 2. Apr 2006, 11:39
das ist ein Tar File aus keine db im eigentlichen sinne, das Tar File ist über 3 GB groß und die index datei ca 130 MB.
Da kann man nicht mit einfachen SQL befehlen drauf zugreifen.(Leider)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Suchen nach jahren in einer Db

  Alt 2. Apr 2006, 12:10
Handelt es sich um die datenbank von freedb.org? Hier gibt es auch Tolls um die datei in Standard-datenabnken zu konvertieren.
z.B. in Access
Markus Kinzler
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Suchen nach jahren in einer Db

  Alt 2. Apr 2006, 15:27
ja genau von freedb.org aber ich möchte gerne das orginal Tar Fiele pasen, weil ich habe keine DB ich habe nur Delphi 7 PE. Aber anernseits währe es einfach wenn ich sie in z.b. SQL umwandeln würde ?
und mir dann "einfach" nur noch unit/klassen suche die mit meine Delphi version zusammen arbeite ?
dann bauche ich mir auch keine gedanken mehr über das suchen machen.
Meine ziele mit dieser DB sind folgende:
1. Ich möchte schnell nach DISC-IDS,Jahre und Titeln suchen können darum die index datei.
Kann man in der DB schneller suchen als in dem TAR fiele ? würde dann auch die index datei entfallen ?

2. Möchte ich die möglichkeit haben die DISC-ID selbst auszurechnen also z.b. du gibt verzeichnise an wo du cd geript hast pro Verzeichnis eine CD dann könnte ich ja einfach die DiSC-ID errechnen(steht besimmt irgenwo wie das geht) danach in der DB suchen und die infos übernehmen
das ist nänlich mein eigentliches vorhaben
und neben bei wollte ich den umgang mit "großen" dateien "üben" habe noch ein paar probelem große integer daten typen zu finden wegen der datei größe ich habe jetzt einen LogInt genommen.

Wenn das mit der konvertierung vom Tar nach sql geht oder in einer ander und mein vorhaben damit relisierbar ist mache ich das auf diesem weg. Warum das rad immter neu erfinden ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Suchen nach jahren in einer Db

  Alt 2. Apr 2006, 15:49
Vielleichr hilft es, sich anzuschauen wie andere das machen. Auf der Seite findest du einige Programme die auf lokale freedb-Datebanken zugreifen können. einige sind OS. Dieses ist sogar in Delphi geschrieben. Ein Weiteres wäre uFREEDB.
Markus Kinzler
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Suchen nach jahren in einer Db

  Alt 2. Apr 2006, 16:57
vielen dank werde ich ausprobieren !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:34 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