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ß !