Hello Irvan

Setelah saya coba, ternyata tidak ada error dengan prosedur Init.
Saya sertakan program yang saya pake di attachment. Yang lainnya, sorry, nih, tidak 
sempat taruh di database milis.

  ----- Original Message ----- 
  From: irvan 
  To: [EMAIL PROTECTED] 
  Sent: Monday, November 10, 2003 6:17 PM
  Subject: Re: [Delphindo] error


  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 
              ADVERTISEMENT
             
       
       

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

  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. 



[Non-text portions of this message have been removed]


------------------------ 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