Zurück   PixAndMore - Support Forum > Programmierung > Skripte

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 13.09.2009
Planlos
Gast
Beiträge: n/a
Standard AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

Zitat:
Zitat von Planlos Beitrag anzeigen
Wenn die betr. Filme Volumes verwenden, gehts leider nicht.
Doch. Grübelndes Blättern in der Aktionen-Doku hat mich dazu gebracht, zu testen, was in TIImage.FileName steht, und siehe da: dort steht auch im Falle von Volume der vollständige Pfad des Bildes.

Code:
function PerformAction: Boolean;
var   query:   TIQuery;
      image:   TIImage;
      fname:   string;
      res:     boolean;
begin
   res := True;
   query := TIQuery.Create;
   query.SQL := 'select * from bilder';

   Browser_BeginUpdate;
   try
      query.open;
      while (not query.Eof) do
      begin
         image := TIImage.Create;
         image.Initialise(query);
         fname := image.FileName;
         if (not FileExists (fname))
            then Browser_AddImage (image);
         image.Free;
         query.next;
      end;
   except
      res := False;
      message ('Hau den Programmierer!');
   finally
      Browser_EndUpdate;
      if (query.Active)
         then query.Close;
      query.Free;
   end;
   
   Result := res;
end;
So läufts, jedenfalls mit einem DB-relativen und einem absoluten Volume (natürlich auch ohne Volume). Mehr habe ich als Volume-Laie keine Lust zu testen.

Al
Mit Zitat antworten
  #12  
Alt 14.09.2009
billy3 billy3 ist offline
Troll
Registriert seit: 08.2006
Beiträge: 160
billy3
Rotes Gesicht AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

hallo Planlos,

jetzt funzt es. prima.

viele grüße

billy3
Mit Zitat antworten
  #13  
Alt 14.09.2009
Benutzerbild von feuster
feuster feuster ist offline
Troll
Registriert seit: 12.2003
Ort: München
Beiträge: 299
feuster befindet sich auf einem aufstrebenden Ast
Standard AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

Hallo,

vorher hat die Aktion alle Bilder gefunden und nun findet sie keines mehr.

Also hoffe ich mal, dass ich Ordnung auf meiner Platte habe und die Aktion nun funktioniert

Super, vielen Dank!
Thomas
__________________
Thomas

bilder.feuster.com
Mit Zitat antworten
  #14  
Alt 14.09.2009
Planlos
Gast
Beiträge: n/a
Standard AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

Zitat:
Zitat von Planlos Beitrag anzeigen
So läufts, jedenfalls mit einem DB-relativen und einem absoluten Volume (natürlich auch ohne Volume). Mehr habe ich als Volume-Laie keine Lust zu testen.
Nachtrag: Das Skript läuft nun sehr viel langsamer als in der ersten Version. Der Grund ist wohl der, dass nun für jedes Bild in der Datenbank ein TIImage-Objekt erzeugt wird, was wohl argen Overhead bedeutet. Das erste Skript hat nur für die Bilder mit nicht gefundenen Dateien ein Objekt erzeugt.

Ich habe das Skript jetzt noch mal geändert, um die Verwendung von TIImage-Objekten zu minimieren:

Code:
function FreeAndNil (o: TIImabasObject): TIImabasObject;
begin
   if (o <> Nil) then o.Free;
   Result := Nil;
end;

function ImageFromQuery (query: TIQuery): TIImage;
begin
   Result := TIImage.Create;
   Result.Initialise (query);
end;

function PerformAction: Boolean;
var   query:      TIQuery;
      image:      TIImage;
      bildpfad:   string;
      res:        boolean;
begin
   res := True;
   query := TIQuery.Create;
   query.SQL := 'select b.*, f.volume as filmvol from bilder b join filme f on f.ukey = b.film';

   Browser_BeginUpdate;
   try
      query.open;
      while (not query.Eof) do
      begin
         if (query.AsString ['filmvol'] = '-')
            then bildpfad := query.AsString ['filename']
         else begin
            image := ImageFromQuery (query);
            bildpfad := image.FileName;
         end;
         if (not FileExists (bildpfad)) then begin
            if (image = NIL)
               then image := ImageFromQuery (query);
            Browser_AddImage (image);
         end;
         image := TIImage (FreeAndNil (image));
         query.next;
      end;
   except
      res := False;
      message ('Hau den Programmierer!');
   finally
      Browser_EndUpdate;
      if (query.Active)
         then query.Close;
      query.Free;
   end;

   Result := res;
end;
Das läuft nun um so schneller, je weniger Bilder auf Volumes liegen.
Vielleicht suche ich auch dafür mal noch ne Lösung.

Al
Mit Zitat antworten
  #15  
Alt 14.09.2009
Planlos
Gast
Beiträge: n/a
Standard AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

Zitat:
Zitat von feuster Beitrag anzeigen
vorher hat die Aktion alle Bilder gefunden und nun findet sie keines mehr.
Vollkommene Ordnung ist unrealistisch!

Mach lieber mal einen schnellen Test: Ein Bild importieren, und die Bilddatei löschen oder umbenennen. Oder mal ein Volume in Imabas verlegen, dann müssten alle dort liegenden Bilder fehlen. Vielleicht ist ja noch ein Wurm drin...

Al
Mit Zitat antworten
  #16  
Alt 15.09.2009
Benutzerbild von rcr
rcr rcr ist offline
Troll
Registriert seit: 10.2007
Beiträge: 153
rcr befindet sich auf einem aufstrebenden Ast
Standard AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

Zitat:
Zitat von Planlos Beitrag anzeigen
Vollkommene Ordnung ist unrealistisch!

Mach lieber mal einen schnellen Test
Ich habe alle Bilder in Volumes und bei mir hatte die 2. Version des Skriptes fehlende Bilder (korrekterweise) gefunden.

Es scheint also zu funktioneren...

Viele Grüsse,
Ralf
Mit Zitat antworten
  #17  
Alt 16.09.2009
Benutzerbild von feuster
feuster feuster ist offline
Troll
Registriert seit: 12.2003
Ort: München
Beiträge: 299
feuster befindet sich auf einem aufstrebenden Ast
Standard AW: Bilder mit nicht mehr vorhandener Bilddatei anzeigen

Zitat:
Zitat von Planlos Beitrag anzeigen
Vollkommene Ordnung ist unrealistisch!

Mach lieber mal einen schnellen Test: Ein Bild importieren, und die Bilddatei löschen oder umbenennen. Oder mal ein Volume in Imabas verlegen, dann müssten alle dort liegenden Bilder fehlen. Vielleicht ist ja noch ein Wurm drin...

Al
Da kennst du mich aber schlecht . Aber im Ernst, hat mich selbst überrascht. Aber scheint ja korrekt zu funktionieren...

Danke für das Script!
__________________
Thomas

bilder.feuster.com
Mit Zitat antworten
Antwort
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Pascal Anzeigen aller Bilder mit mindestens den Personen des ausgewählten Bildes moguay Skripte 10 01.03.2009 11:50
Pascal Anzeigen aller Bilder von einem Thema Kai Skripte 1 13.02.2009 11:37
Explorer: Anzahl Bilder anzeigen Elli Bugreports 2 25.12.2008 23:30
Bilder ohne Thema anzeigen martin.lindenlauf Imabas Allgemein 4 30.09.2008 15:31
Reorganisieren nicht mehr möglich frank Imabas Allgemein 2 14.10.2007 22:27


Powered by vBulletin® Version 3.7.1 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.