sebenernya saya pake komponen tambahan yang tinggal saya tambahin di 
usesnya,
dan eror itu terjadi saat mengeksekusi perintah dari komponen tersebut, 
komponenya tridparty
erornya terjadi pada procedure Texif.init
berikut unitnya


unit Exif;

interface

uses
  Classes, SysUtils;

type
  TExif = class(TObject)
    private
      FImageDesc          : String;     //Picture description
      FMake               : String;     //Camera manufacturer
      FModel              : String;     //Camere model
      FOrientation        : Byte;       //Image orientation - 1 normal
      FOrientationDesk    : String;     //Image orientation description
      FCopyright          : String;     //Copyright
      FValid              : Boolean;    //Has valid Exif header
      FDateTime           : String;     //Date and Time of Change
      FDateTimeOriginal   : String;     //Original Date and Time
      FDateTimeDigitized  : String;     //Camshot Date and Time
      FUserComments       : String;     //User Comments

      f                   : File;
      idfp                : Cardinal;
      function ReadValue(const Offset, Count: Cardinal): String;
      procedure Init;
    public
      constructor Create;
      procedure ReadFromFile(const FileName: AnsiString);

      property ImageDesc: String read FImageDesc;
      property Make: String read FMake;
      property Model: String read FModel;
      property Orientation: Byte read FOrientation;
      property OrientationDesk: String read FOrientationDesk;
      property Copyright: String read FCopyright;
      property Valid: Boolean read FValid;
      property DateTime: String read FDateTime;
      property DateTimeOriginal: String read FDateTimeOriginal;
      property DateTimeDigitized: String read FDateTimeDigitized;
      property UserComments: String read FUserComments;
  end;

implementation

type
  TMarker = record
    Marker   : Word;      //Section marker
    Len      : Word;      //Length Section
    Indefin  : Array [0..4] of Char; //Indefiner - "Exif" 00, "JFIF" 00 
and ets
    Pad      : Char;      //0x00
  end;

  TTag = record
    TagID   : Word;       //Tag number
    TagType : Word;       //Type tag
    Count   : Cardinal;   //tag length
    OffSet  : Cardinal;   //Offset / Value
  end;

  TIFDHeader = record
    pad          : Byte; //00h
    ByteOrder    : Word; //II (4D4D)
    i42          : Word; //2A00
    IFD0offSet   : Cardinal; //0th offset IFD
    Interoperabil: Byte;
  end;

function TExif.ReadValue(const Offset, Count: Cardinal): String;
var fp: LongInt;
     i: Word;
begin
  SetLength(Result,Count);
  fp:=FilePos(f); //Save file offset
  Seek(f, Offset);
  try
    i:=1;
    repeat
      BlockRead(f,Result[i],1);
      inc(i);
    until (i>=Count) or (Result[i-1]=#0);
    if i<=Count then Result:=Copy(Result,1,i-1);
  except
    Result:='';
  end;
//  Result:=TrimRight(Result);
  Seek(f,fp);     //Restore file offset
end;

procedure TExif.Init;
begin
  idfp:=0;

  FImageDesc:='';
  FMake:='';
  FModel:='';
  FOrientation:=1;
  FOrientationDesk:='Normal';
  FDateTime:='';
  FCopyright:='';
  FValid:=False;
  FDateTimeOriginal:='';
  FDateTimeDigitized:='';
  FUserComments:='';
end;

constructor TExif.Create;
begin
  Init;
end;

procedure TExif.ReadFromFile(const FileName: AnsiString);
const ori: Array[1..8] of String=('Normal','Mirrored','Rotated 
180','Rotated 180, mirrored','Rotated 90 left, mirrored','Rotated 90 
right','Rotated 90 right, mirrored','Rotated 90 left');
var j: TMarker;
  idf: TIFDHeader;
 off0: Cardinal; //Null Exif Offset
  tag: TTag;
    i: Integer;
  SOI: Word; //2 bytes SOI marker. FF D8 (Start Of Image)

begin
  if not FileExists(FileName) then exit;
  Init;

  AssignFile(f,FileName);
  reset(f,1);

  BlockRead(f,SOI,2);
  if SOI=$D8FF then begin //Is this Jpeg
    BlockRead(f,j,9);

    if j.Marker=$E0FF then begin //JFIF Marker Found
      Seek(f,20); //Skip JFIF Header
      BlockRead(f,j,9);
    end;

    if j.Marker=$E1FF then begin //If we found Exif Section. 
j.Indefin='Exif'.
      FValid:=True;
      off0:=FilePos(f)+1;   //0'th offset Exif header
      BlockRead(f,idf,11);  //Read IDF Header

      i:=0;
      repeat
        inc(i);
        BlockRead(f,tag,12);
        //0E01 ImageDescription
        if tag.TagID=$010E then 
FImageDesc:=ReadValue(tag.OffSet+off0,tag.Count);
        //0F01 Make
        if tag.TagID=$010F then FMake:=ReadValue(tag.OffSet+off0,tag.Count);
        //1001 Model
        if tag.TagID=$0110 then 
FModel:=ReadValue(tag.OffSet+off0,tag.Count);
        //6987 Exif IFD Pointer
        if tag.TagID=$8769 then idfp:=Tag.OffSet; //Read Exif IDF offset
        //1201 Orientation
        if tag.TagID=$0112 then begin
           FOrientation:=tag.OffSet;
           if tag.OffSet in [1..8] then 
FOrientationDesk:=ori[tag.OffSet] else FOrientationDesk:='Unknown';
        end;
        //3201 DateTime
        if tag.TagID=$0132 then 
FDateTime:=ReadValue(tag.OffSet+off0,tag.Count);
        //9882 CopyRight
        if tag.TagID=$8298 then 
FCopyright:=ReadValue(tag.OffSet+off0,tag.Count);
      until (i>11);

      if idfp>0 then begin
        Seek(f,idfp+12+2);//12 - Size header before Exif, 2 - size Exif 
IFD Number
        i:=0;
        repeat
          inc(i);
          BlockRead(f,tag,12);
  {
          You may simple realize read this info:

          tag |Name of tag

          9A82 ExposureTime
          9D82 FNumber
          0090 ExifVersion
          0390 DateTimeOriginal
          0490 DateTimeDigitized
          0191 ComponentsConfiguration
          0292 CompressedBitsPerPixel
          0192 ShutterSpeedValue
          0292 ApertureValue
          0392 BrightnessValue
          0492 ExposureBiasValue
          0592 MaxApertureRatioValue
          0692 SubjectDistance
          0792 MeteringMode
          0892 LightSource
          0992 Flash
          0A92 FocalLength
          8692 UserComments
          9092 SubSecTime
          9192 SubSecTimeOriginal
          9292 SubSecTimeDigitized
          A000 FlashPixVersion
          A001 Colorspace
          A002 Pixel X Dimension
          A003 Pixel Y Dimension
  }

          //0390 FDateTimeOriginal
          if tag.TagID=$9003 then 
FDateTimeOriginal:=ReadValue(tag.OffSet+off0,tag.Count);
          //0490 DateTimeDigitized
          if tag.TagID=$9004 then 
FDateTimeDigitized:=ReadValue(tag.OffSet+off0,tag.Count);
          //8692 UserComments
          if tag.TagID=$9286 then 
FUserComments:=ReadValue(tag.OffSet+off0,tag.Count);
        until (i>23);
      end;
    end;
  end;
  CloseFile(f);
end;

end.






------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/i7folB/TM
---------------------------------------------------------------------~->

Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED] 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 


Kirim email ke