Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2015.10.04;
Скачать: [xml.tar.bz2];

Вниз

TPicture.LoadFromFile - интерпритация формата по содержимому.   Найти похожие ветки 

 
brother ©   (2012-03-31 05:56) [40]

мы говорим - сайт должен отвечать спецификации html!
они говорят - зачем? браузер же "кушает" наш код?!

зы. но всеж спецификация есть и ее надо придерживаться...


 
Anatoly Podgoretsky ©   (2012-03-31 08:16) [41]

Ну правильно говоришь, и большинство браузеров прощают это. Например по спецификации каждый тег <TEG> должен быть закрыт </TEG>, а в реальности не так и много хуже. Поэтому определять по сигнатуре HTML гнилое дело. При проверке нужна ветвь ELSE


 
brother ©   (2012-03-31 19:48) [42]

> по спецификации каждый тег <TEG> должен быть закрыт </TEG>

нет не каждый... например: Тег <IMG>
http://html.manual.ru/book/html/body/objects/img.php
не имеет конечного тега.


 
Anatoly Podgoretsky ©   (2012-04-01 19:20) [43]

</>


 
brother ©   (2012-04-01 20:29) [44]

> </>

это для XHTML
а для HTML закрывающий тэго не нужен...


 
Unknown user ©   (2012-04-04 17:48) [45]

Я когда-то давно писал собственную функцию для определения типа файла по сигнатуре. Если еще нужно, забирайте.

function DetermineFileType(const FileName:string; var DT:TDataType):boolean;
//елементы массива расположены в порядке
//уменьшения ошибки ложного определения типа файла
const ChkTypes:array[0..6] of TDataType=(dtRTF,dtIMG_EMF,dtIMG_BMP,
                                        dtIMG_JPG,dtIMG_WMF,dtTXT,dtIMG_ICO);
var Stream:TFileStream;
   Ind:integer;
   
function IsType(AType:TDataType):boolean;
const cRTFSignature="{\rtf1";
      cBMPSignature="BM";
      cJPGSignature="яШя";
      cEMFSignature=" EMF";
      MaxReadCnt=8192;
var Len,Cnt,TotalCnt:integer;
    Sym,OldSym:Char;
    S:string; Wrd:Word;
    DWrd:LongWord;

begin
 Result:=false;
 Stream.Position:=0;
 case AType of

  dtRTF: begin
          Len:=Length(cRTFSignature);
          SetString(S,nil,Len);
          Cnt:=Stream.Read(Pointer(S)^,Len);
          if Cnt<>Len then exit;
          Result:=S=cRTFSignature;
         end;

  dtTXT: begin
          TotalCnt:=0; OldSym:=#0;
          while TotalCnt<MaxReadCnt do
           begin
           Len:=SizeOf(Sym);
           Cnt:=Stream.Read(Sym,Len);
           if Cnt<>Len then exit;
           if Sym=#10 then begin
            Result:=OldSym=#13;
            if not Result then exit;
           end; {if}
           OldSym:=Sym;
           Inc(TotalCnt,Cnt);
          end; {while}
         end;

   dtIMG_BMP: begin
               Len:=SizeOf(Wrd);
               Cnt:=Stream.Read(Wrd,Len);
               if Cnt<>Len then exit;
               Result:=Wrd=$4D42;
              end;

   dtIMG_JPG: begin
               Len:=Length(cJPGSignature);
               SetString(S,nil,Len);
               Cnt:=Stream.Read(Pointer(S)^,Len);
               if Cnt<>Len then exit;
               Result:=S=cJPGSignature;
              end;

   dtIMG_WMF: begin
               Stream.Seek(4,0);
               Len:=SizeOf(Wrd);
               Cnt:=Stream.Read(Wrd,Len);
               if Cnt<>Len then exit;
               Result:=(Wrd=$0300) or (Wrd=$0100);
              end;

   dtIMG_EMF: begin
               Stream.Seek(40,0);
               Len:=Length(cEMFSignature);
               SetString(S,nil,Len);
               Cnt:=Stream.Read(Pointer(S)^,Len);
               if Cnt<>Len then exit;
               Result:=S=cEMFSignature;
              end;

   dtIMG_ICO: begin
               Len:=SizeOf(DWrd);
               Cnt:=Stream.Read(DWrd,Len);
               if Cnt<>Len then exit;
               Result:=DWrd=$10000;
              end;

 end; {case}
end; {function IsType}

begin
Stream:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyWrite);
try
 Result:=false;
 for Ind:=0 to High(ChkTypes) do
  if IsType(ChkTypes[Ind]) then begin
   DT:=ChkTypes[Ind];
   Result:=true;
   exit;
  end;
finally
 Stream.Free;
end;
end;



Страницы: 1 2 вся ветка

Форум: "Основная";
Текущий архив: 2015.10.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.003 c
4-1273682403
zamtmn
2010-05-12 20:40
2015.10.04
в SysTreeView32 не приходит WM_CONTEXTMENU


15-1424122299
Юрий
2015-02-17 00:31
2015.10.04
С днем рождения ! 17 февраля 2015 вторник


2-1399593217
Tanya
2014-05-09 03:53
2015.10.04
запрос не получается


1-1333000560
Unknown user
2012-03-29 09:56
2015.10.04
TInterfacedObject борьба с circular references


15-1423949475
Юрий
2015-02-15 00:31
2015.10.04
С днем рождения ! 15 февраля 2015 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский