![]() |
Ordner mit Liste in TadvStringgrid vergleichen u Thumbnails
Hallo...
also, schwer zu formulieren. Ich habe ein TadvStringgrid in dem stehen in der ersten Spalte Bildnamen untereinander z.B. 112222.jpg, 112223.jpg usw. Diese Bildinformationen lade ich aus einer Exceldatei. Ich möchte gerne wissen wie ich den Inhalt der ersten Spalte (also die Bildnamen) mit dem Inhalt eines Ordners vergleichen kann in dem sich schon x Bilder befinden. Für jedes Bild was lokal vorhanden ist soll dann ein Icon in der entsprechende Zeile einfügt werden. Wie ich das Icon einfüge weiß ich schon. Boahh...hoffe das versteht jemand. Gruss Capo |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Hallo,
Gehe alle Zeilen des TAdvStringgrids durch und überprüfe mit FileExists(Pfad + Bildname) ob die Datei existiert. |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Das ist eine gute Idee!
Danke für deinen Denkanstoß. |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Hallo,
merke nun, dass es nicht so einfach ist wie ich es mir vorgestellt habe;
Delphi-Quellcode:
Es wird immer in jeder zeile eine Grafik eingefügt.
procedure TForm1.InitGraphicGrid;
var ExePath,bilddatei,lokalbildpfad: string; i:integer; begin ExePath := ExtractFilePath(Application.ExeName); bilddatei := Form1.AdvStringGrid1.Cells[0, Form1.AdvStringGrid1.Row]; lokalbildpfad:= Form1.AdvStringGrid2.Cells[0, Form1.AdvStringGrid2.Row]; for i:=1 to advstringgrid1.rowcount-1 do if FileExists(ExePath +lokalbildpfad+'\'+bild+'.jpg') then begin advstringgrid1.AddDataImage(3,i,0,habeforetext,vaTop); // Grafik einfügen end; end; Gruß Capo |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Hallo Capo
Du initialisierst vor der Schleife die Variablen bilddatei und lokalbildpfad mit einem Wert. In der Schleife rufst du jedesmal
Delphi-Quellcode:
auf..
FileExists(ExePath +lokalbildpfad+'\'+bild+'.jpg')
Zumdem wird die Variable bilddatei nur initialisierst aber nachher nicht verwendet. |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Hallo Toms,
Danke für deine Hilfe. Ich habe die Variable bilddatei nun verwendet. Mit
Delphi-Quellcode:
wird ja nur überprüft was in dem Ordner ist, ich denke es fehlt der vergleich mit dem Dateinamen im Stringgrid, oder?
if FileExists(ExePath +lokalbildpfad+'\'+bilddatei+'.jpg') then
Delphi-Quellcode:
Meine Schleife ist doch richtig so?
var
ExePath,bilddatei,lokalbildpfad: string; i:integer; begin ExePath := ExtractFilePath(Application.ExeName); bilddatei := Form1.AdvStringGrid1.Cells[0, Form1.AdvStringGrid1.Row]; lokalbildpfad:= Form1.AdvStringGrid2.Cells[0, Form1.AdvStringGrid2.Row]; for i:=0 to advstringgrid1.rowcount-1 do if FileExists(ExePath +lokalbildpfad+'\'+bilddatei+'.jpg') then // showmessage(ExePath +lokalbildpfad+'\'+bilddatei+'.jpg'); advstringgrid1.AddDataImage(3,i,8,habeforetext,vaTop); // Grafik einfügen end; Ich bekomme nichts angezeigt, auch showmessage zeigt nichts an |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Hallo Vito,
Tom schrieb, dass deine Laufvariable auch in der Schleife benutzt werden muss:
Delphi-Quellcode:
Dein Code passt aber irgendwie nicht zu deiner Problembeschreibung, nach der du eigentlich einen Bild-Namen '123.jpg' hast und die zugehörige Bild-Datei in einem bestimmten Ordner suchen und laden möchtest. In deinem Code scheinst du den vollständigen Namen schon zu kennen und Name und Pfad auf zwei Grids verteilt zu haben. Du musst dann ja nicht mehr nach der Datei zu suchen.
var
exePath, fn, imgName, imgPath: string; iRow: integer; begin exePath := ExtractFilePath(Application.ExeName); for iRow := 0 to Pred(AdvStringGrid1.RowCount) do begin imgName := AdvStringGrid1.Cells[0, iRow]; imgPath := AdvStringGrid2.Cells[0, iRow]; fn := exePath + IncludeTrailingPathDelimiter(imgPath) + imgName + '.jpg'; if FileExists(fn) then AdvStringGrid1.AddDataImage(3, iRow, 8, haBeforeText, vaTop) else AdvStringGrid1.Cells[3, iRow] := '? ' + fn; end; end; Freundliche Grüße |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Zitat:
Ich möchte nicht die Bild-Dateien eines Ordners laden. Im AdvStringgrid1 stehen in der ersten Spalte die Dateinamen, diese Namen möchte ich vergleichen mit den Bild-Dateien einens Ordners. Wenn die Bild-Dateien schon in dem Ordner sind soll in der Zeile des AdvStringgrid1 eine Grafik angezeigt werden, die symbolisiert, dass die Datei lokal vorhanden ist. Freundliche Grüße Capo [EDIT] Dein Beispiel markiert auch wieder alle Zeilen. Und für imgName nimmt er nur das erste Bild in der ersten Zeile, ich muss herausfinden wie ich alle Bilder abfrage. |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Abgesehen von den beiden C&P-Fehlern bei der Zeilenadressierung für imgName sollte der Code den gewünschten Effekt haben. Du musst ihn korrigiert haben, sonst würde der Code nicht übersetzt werden. Vermutlich hast du aus iRow wieder Row gemacht, statt das Grid zu entfernen.
Delphi-Quellcode:
Ist es denn wirklich so, dass du Namen und Pfad in getrennten Grids abgelegt hast?
// ...
imgName := AdvStringGrid1.Cells[0, {AdvStringGrid1.}iRow]; // ... |
Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
Zitat:
Zitat:
Grüße Capo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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