Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ordner mit Liste in TadvStringgrid vergleichen u Thumbnails (https://www.delphipraxis.net/120573-ordner-mit-liste-tadvstringgrid-vergleichen-u-thumbnails.html)

capo 12. Sep 2008 22:42


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

toms 12. Sep 2008 22:45

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.

capo 12. Sep 2008 23:02

Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
 
Das ist eine gute Idee!
Danke für deinen Denkanstoß.

capo 13. Sep 2008 01:11

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:
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;
Es wird immer in jeder zeile eine Grafik eingefügt.

Gruß
Capo

toms 13. Sep 2008 06:18

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:
FileExists(ExePath +lokalbildpfad+'\'+bild+'.jpg')
auf..

Zumdem wird die Variable bilddatei nur initialisierst aber nachher nicht verwendet.

capo 13. Sep 2008 11:11

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:
if FileExists(ExePath +lokalbildpfad+'\'+bilddatei+'.jpg') then
wird ja nur überprüft was in dem Ordner ist, ich denke es fehlt der vergleich mit dem Dateinamen im Stringgrid, oder?


Delphi-Quellcode:
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;
Meine Schleife ist doch richtig so?
Ich bekomme nichts angezeigt, auch showmessage zeigt nichts an

marabu 13. Sep 2008 12:24

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:
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;
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.

Freundliche Grüße

capo 13. Sep 2008 14:45

Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
 
Zitat:

Zitat von marabu
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.

Hallo Marabu, danke für deine Antwort.
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.

marabu 13. Sep 2008 15:39

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:
// ...
imgName := AdvStringGrid1.Cells[0, {AdvStringGrid1.}iRow];
// ...
Ist es denn wirklich so, dass du Namen und Pfad in getrennten Grids abgelegt hast?

capo 13. Sep 2008 16:10

Re: Ordner mit Liste in TadvStringgrid vergleichen u Thumbna
 
Zitat:

Vermutlich hast du aus iRow wieder Row gemacht, statt das Grid zu entfernen.
genau das war es, nun funktioniert es. Danke...danke..danke!
Zitat:

Ist es denn wirklich so, dass du Namen und Pfad in getrennten Grids abgelegt hast?
Ja, denn ich nutze in dem zweiten Stringgrid der Ordnernamen als Anzeige für den Ordner.
Grüße
Capo


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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