Einzelnen Beitrag anzeigen

100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#1

VST - IncrementalSearch -> Access violation

  Alt 13. Jul 2008, 14:00
Hallo zusammen,

Also ich habe einen VST mit der IncrementalSearch-Funktion "ausgerüstet".
Eigentlich funktioniert das wunderbar, doch wenn ich zwei mal hintereinander die selbe Taste auf der Tastatur (= selber Buchstabe) drücke, gibts eine "access violation".

Ich finde einfach nicht heraus, was das Problem ist!
Vielleicht kann ja von euch jemand helfen...

Hier mal bisschen Code, wenn ihr mehr braucht sagt bescheid.
Delphi-Quellcode:
type
  TArchiv = class(TComponent)
  private
    fFilename: String;
    fTitel: String;
    fInterpret: String;
    fAlbum: String;
    fGenre: String;
    fDauer: TTime;
    fBewertung: Integer;
    fCounter: Integer;
    fDatum: TDate;


    function getPlaylistname: String;
  published
    property Filename: String read fFilename write fFilename;
    property Titel: String read fTitel write fTitel;
    property Interpret: String read fInterpret write fInterpret;
    property Album: String read fAlbum write fAlbum;
    property Genre: String read fGenre write fGenre;
    property Dauer: TTime read fDauer write fDauer;
    property Bewertung: Integer read fBewertung write fBewertung;
    property Counter: Integer read fCounter write fCounter;
    property Datum: TDate read fDatum write fDatum;

    property Playlistname: String read getPlaylistname;

  public

end;
pArchiv = ^TArchiv;

//...

procedure TForm1.VST1IncrementalSearch(Sender: TBaseVirtualTree;
  Node: PVirtualNode; const SearchText: WideString; var Result: Integer);
var
  s1, s2: string;
  Archiv: TArchiv;
begin

  Archiv := TArchiv(vst1.getnodedata(node)^); // <--- Diese Zeile wird markiert bei der acces violation

  s1 := SearchText;

  case vst1.Header.SortColumn of
    0: s2 := Archiv.Filename;
    1: s2 := Archiv.Titel;
    2: s2 := Archiv.Interpret;
    3: s2 := Archiv.Playlistname;
    4: s2 := Archiv.Album;
    5: s2 := Archiv.Genre;
    6: s2 := formatdatetime('HH:MM:SS', Archiv.Dauer);
    7: s2 := Inttostr(Archiv.Bewertung);
    8: s2 := Inttostr(Archiv.Counter);
    9: s2 := DateTimeToStr(Archiv.Datum);
  end;

  if s2 = 'then
    s2 := ' ';
  
  Result := StrLIComp(pchar(lowercase(s1)), PChar(lowercase(s2)), Min(Length(s1), Length(s2)));
end;
wäre echt dankbar wenn mir jemand helfen könnte!

MFG
urbanbruhin
  Mit Zitat antworten Zitat