Programlama yapalım ve Öğrenelim. - Delphi Eğitim173
  Ana Sayfa
  .NET Eğitim Notları
  Visual C# .NET Örnek Kodları
  VisualBasic.NET Örnek Kodları
  J# Örnekleri
  ASP.NET Örnek Kodları
  Delphi Eğitim
  => Delphi Eğitim1
  => Delphi Eğitim2
  => Delphi Eğitim3
  => Delphi Eğitim4
  => Delphi Eğitim5
  => Delphi Eğitim6
  => Delphi Eğitim7
  => Delphi Eğitim8
  => Delphi Eğitim9
  => Delphi Eğitim10
  => Delphi Eğitim11
  => Delphi Eğitim13
  => Delphi Eğitim14
  => Delphi Eğitim15
  => Delphi Eğitim16
  => Delphi Eğitim17
  => Delphi Eğitim18
  => Delphi Eğitim19
  => Delphi Eğitim20
  => Delphi Eğitim21
  => Delphi Eğitim22
  => Delphi Eğitim23
  => Delphi Eğitim24
  => Delphi Eğitim25
  => Delphi Eğitim26
  => Delphi Eğitim27
  => Delphi Eğitim28
  => Delphi Eğitim29
  => Delphi Eğitim30
  => Delphi Eğtim31
  => Delphi Eğitim32
  => Delphi Eğitim33
  => Delphi Eğitim34
  => Delphi Eğitim35
  => Delphi Eğitim36
  => Delphi Eğitim37
  => Delphi Eğitim38
  => Delphi Eğitim39
  => Delphi Eğitim40
  => Delphi Eğitim41
  => Delphi Eğitim42
  => Delphi Eğitim43
  => Delphi Eğitim44
  => Delphi Eğitim45
  => Delphi Eğitim46
  => Delphi Eğitim47
  => Delphi Eğitim48
  => Delphi Eğitim49
  => Delphi Eğitim50
  => Delphi Eğitim51
  => Delphi Eğitim52
  => Delphi Eğitim53
  => Delphi Eğitim54
  => Delphi Eğitim55
  => Delphi Eğitim56
  => Delphi Eğitim57
  => Delphi Eğitim58
  => Delphi Eğitim59
  => Delphi Eğitim60
  => Delphi Eğitim61
  => Delphi Eğitim62
  => Delphi Eğitim63
  => Delphi Eğitim64
  => Delphi Eğitim65
  => Delphi Eğitim66
  => Delphi Eğitim67
  => Delphi Eğitim68
  => Delphi Eğitim69
  => Delphi Eğitim70
  => Delphi Eğitim71
  => Delphi Eğitim72
  => Delphi Eğitim73
  => Delphi Eğitim74
  => Delphi Eğitim75
  => Delphi Eğitim76
  => Delphi Eğitim77
  => Delphi Eğitim78
  => Delphi Eğitim79
  => Delphi Eğitim80
  => Delphi Eğitim81
  => Delphi Eğitim82
  => Delphi Eğitim83
  => Delphi Eğitim84
  => Delphi Eğitim85
  => Delphi Eğitim86
  => Delphi Eğitim87
  => Delphi Eğitim88
  => Delphi Eğitim89
  => Delphi Eğitim90
  => Delphi Eğitim91
  => Delphi Eğitim92
  => Delphi Eğitim93
  => Delphi Eğitim94
  => Delphi Eğitim95
  => Delphi Eğitim96
  => Delphi Eğitim97
  => Delphi Eğitim98
  => Delphi Eğitim99
  => Delphi Eğitim100
  => Delphi Eğitim101
  => Delphi Eğitim102
  => Delphi Eğitim103
  => Delphi Eğitim104
  => Delphi Eğitim105
  => Delphi Eğitim106
  => Delphi Eğitim107
  => Delphi Eğitim108
  => Delphi Eğitim109
  => Delphi Eğitim110
  => Delphi Eğitim111
  => Delphi Eğitim112
  => Delphi Eğitim113
  => Delphi Eğitim114
  => Delphi Eğitim115
  => Delphi Eğitim116
  => Delphi Eğitim117
  => Delphi Eğitim118
  => Delphi Eğitim119
  => Delphi Eğitim120
  => Delphi Eğitim121
  => Delphi Eğitim122
  => Delphi Eğitim123
  => Delphi Eğitim124
  => Delphi Eğitim125
  => Delphi Eğitim126
  => Delphi Eğitim127
  => Delphi Eğitim128
  => Delphi Eğitim129
  => Delphi Eğitim130
  => Delphi Eğitim131
  => Delphi Eğitim132
  => Delphi Eğitim133
  => Delphi Eğitim134
  => Delphi Eğitim135
  => Delphi Eğitim136
  => Delphi Eğitim137
  => Delphi Eğitim138
  => Delphi Eğitim139
  => Delphi Eğitim140
  => Delphi Eğitim141
  => Delphi Eğitim142
  => Delphi Eğitim143
  => Delphi Eğitim144
  => Delphi Eğitim145
  => Delphi Eğitim146
  => Delphi eğitim147
  => Delphi Eğitim148
  => Delphi Eğitim149
  => Delphi Eğitim150
  => Delphi Eğitim151
  => Delphi Eğitim152
  => Delphi Eğitim153
  => Delphi Eğitim154
  => Delphi Eğitim155
  => Delphi Eğitim156
  => Delphi Eğitim157
  => Delphi Eğitim158
  => Delphi Eğitim159
  => Delphi Eğitim160
  => Delphi Eğitim161
  => Delphi Eğitim162
  => Delphi Eğitim164
  => Delphi Eğitim165
  => Delphi Eğitim166
  => Delphi Eğitim167
  => Delphi Eğitim168
  => Delphi Eğitim169
  => Delphi Eğitim170
  => Delphi Eğitim171
  => Delphi Eğitim172
  => Delphi Eğitim173
  => Delphi Eğitim174
  => Delphi Eğitim175
  => Delphi Eğitim176
  => Delphi Eğitim177
  => Delphi Eğitim178
  => Delphi Eğitim179
  => Delphi Eğitim180
  => Delphi Eğitim181
  => Delphi Eğitim182
  => Delphi Eğitim183
  => Delphi Eğitim184
  => Delphi Eğitim185
  => Delphi Eğitim186
  => Delphi Eğitim187
  => Delphi Eğitim188
  => Delphi Eğitim189
  => Delphi Eğitim190
  => Delphi Eğitim191
  => Delphi Eğitim192
  => Delphi Eğitim193
  => Delphi Eğitim194
  => Delphi Eğitim195
  => Delphi Eğitim196
  => Delphi Eğitim197
  => Delphi Eğitim198
  => Delphi Eğitim199
  => Delphi Eğitim200
  => Delphi Eğitim201
  => Delphi Eğitim202
  => Delphi Eğitim203
  => Delphi Eğitim204
  => Delphi Eğitim205
  => Delphi Eğitim206
  => Delphi Eğitim207
  => Delphi Eğitim208
  => Delphi Eğitim209
  => Delphi Eğitim210
  => Delphi Eğitim211
  => Delphi Eğitim212
  => Delphi Eğitim213
  => Delphi Eğitim214
  => Delphi Eğitim215
  => Delphi Eğitim216
  => Delphi Eğitim217
  => Delphi Eğitim218
  => Delphi Eğitim219
  => Delphi Eğitim220
  => Delphi Eğitim221
  => Delphi Eğitim222
  => Delphi Eğitim223
  => Delphi Eğitim224
  => Delphi Eğitim225
  => Delphi Eğitim226
  => Delphi Eğitim227
  => Delphi Eğitim228
  => Delphi Eğitim229
  => Delphi Eğitim230
  => Delphi Eğitim231
  => Delphi Eğitim232
  => Delphi Eğitim233
  => Delphi Eğitim234
  => Delphi Eğitim235
  => Delphi Eğitim236
  => Delphi Eğitim237
  => Delphi Eğitim238
  => Delphi Eğitim239
  => Delphi Eğitim240
  => Delphi Eğitim241
  => Delphi Eğitim242
  İletişim

neoturk: ...Search for text in textfiles ?...

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, Buttons;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    Memo1: TMemo;

    Edit1: TEdit;

    SpeedButton1: TSpeedButton;

    procedure SpeedButton1Click(Sender: TObject);

  private

    { Private-Deklarationen }

  public

    { Public-Deklarationen }

  end;

 

var

  Form1: TForm1;

 

 

 

  // Aus einem alten c't-Heft von C nach Delphi übersetzt

  // Deklarationsteil

 

procedure Ts_init(P: PChar; m: Integer);

function Ts_Search(Text, p: PChar; m: Integer; Start: Longint): Longint;

 

 

 

  // Globale Variablen

  // *****************

 

 

var

 

  shift: array[0..255] of Byte;     // Shifttabelle für Turbosearch

  Look_At: Integer;                   // Look_At-Position für Turbosearch

 

 

 

implementation

 

{$R *.DFM}

 

 

procedure Ts_init(P: PChar; m: Integer);

var

  i: Integer;

begin

  // *** Suchmuster analysieren ****

 

  {1.}   for i := 0 to 255 do shift[i] := m + 1;

  {2.}   for i := 0 to m - 1 do Shift[Ord(p[i])] := m - i;

 

  Look_at := 0;

 

  {3.}   while (look_At < m - 1) do

  begin

    if (p[m - 1] = p[m - (look_at + 2)]) then Exit

    else

      Inc(Look_at, 1);

  end;

 

  // *** Beschreibung ****

  //  1. Sprungtabelle Shift[0..255] wird mit der max. Sprungweite (Musterlänge+1)

  //     initialisiert.

  //  2. Für jedes Zeichen im Muster wird seine Position (von hinten gezählt) in

  //     der Shift-Tabelle eingetragen.

  //     Für das Muster "Hans" würden folgende Shiftpositionen ermittelt werde:

  //      Für H  = ASCII-Wert = 72d ,dass von hinten gezählt an der 4. Stelle ist,

  //                                 wird Shift[72] := 4 eingetragen.

  //      Für a  = 97d   = Shift[97]  := 3;

  //      Für n  = 110d  = Shift[110] := 2;

  //      Für s  = 115d  = Shift[115] := 1;

  //     Da das Muster von Vorn nach Hinten durchsucht wird, sind doppelt auf-

  //     tretende Zeichen kein Problem. Die Shift-Werte werden überschrieben und

  //     mit der kleinsten Sprungweite automatisch aktualisiert.

  //  3. Untersucht wo (position von hinten) das Letzte Zeichen im Muster

  //     nochmals vorkommt und Speichert diese in der Variable Look_AT.

  //     Die Maximale Srungweite beim Suchen kann also 2*Musterlänge sein wenn

  //     das letzte Zeichen nur einmal im Muster vorhanden ist.

end;

 

 

function Ts_Search(Text, p: PChar; m: Integer; Start: Longint): Longint;

var

  I: Longint;

  T: PChar;

begin

  T      := Text + Start;   // Zeiger auf Startposition im Text setzen

  Result := -1;

  repeat

    i := m - 1;

    // Letztes Zeichen des Suchmusters im Text suchen.

    while (t[i] <> p[i]) do t := t + shift[Ord(t[m])];

    i := i - 1;  // Vergleichszeiger auf vorletztes Zeichen setzen

    if i < 0 then i := 0; // wenn nach nur einem Zeichen gesucht wird,

    // kann i = -1 werden.

    // restliche Zeichen des Musters vergleichen

    while (t[i] = p[i]) do

    begin

      if i = 0 then Result := t - Text;

      i := i - 1;

    end;

    // Muster nicht gefunden -> Sprung um max. 2*m

    if Result = -1 then t := t + Look_AT + shift[Ord(t[m + look_at])];

  until Result <> -1; // Repeat

end;

 

//  Such-Procedure auslösen  (hier beim drücken eines Speedbuttons auf FORM1)

 

procedure TForm1.SpeedButton1Click(Sender: TObject);

var

  tt: string;

  L: Integer;

  L2, sp, a: Longint;

  F: file;         // File-Alias

  Size: Integer;   // Textlänge

  Buffer: PChar;   // Text-Memory-Buffer

begin

  tt := Edit1.Text;      // Suchmuster

  L  := Length(TT);      // Suchmusterlänge

  ts_init(PChar(TT), L); // Sprungtabelle für Suchmuster initialisieren

  try

    AssignFile(F, 'test.txt');

    Reset(F, 1);                   // File öffnen

    Size := FileSize(F);           // Filegrösse ermitteln

    GetMem(Buffer, Size + L + 1);      // Memory reservieren in der Grösse von

    // TextFilelänge+Musterlänge+1

    try

      BlockRead(F, Buffer^, Size);  // Filedaten in den Buffer füllen

      StrCat(Buffer, PChar(TT));     // Suchmuster ans Ende des Textes anhängen

      // damit der Suchalgorythmus keine Fileende-

      // Kontrolle machen muss.

      // Turbo-Search

 

      SP := 0;               // Startpunkt der Suche im Text

      A  := 0;               // Anzahl-gefunden-Zähler

      while SP < Size do

      begin

        L2 := Ts_Search(Buffer, PChar(TT), L, SP); // L = Musterlänge

        // SP= Startposition im Text

 

        SP := L2 + L; // StartPosition auf Letzte gefundene Position+Musterlänge

        Inc(a);     // Anzahl gefunden Zähler

      end;

      // Am Schluss nicht vergessen Buffer freigeben und Inputfile schliessen

    finally

      FreeMem(Buffer);              // Memory freigeben.

    end;

  finally

    CloseFile(F);                   // Datei schliessen.

  end;

end;

 

end.

 

Delphi - .....................................

 

neoturk: ...Identifying a file through crc-32 ?...

// The constants here are for the CRC-32 generator

// polynomial, as defined in the Microsoft

// Systems Journal, March 1995, pp. 107-108

const

  Table: array[0..255] of DWORD =

    ($00000000, $77073096, $EE0E612C, $990951BA,

    $076DC419, $706AF48F, $E963A535, $9E6495A3,

    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,

    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,

    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,

    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,

    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,

    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,

    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,

    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,

    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,

    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,

    $26D930AC, $51DE003A, $C8D75180, $BFD06116,

    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,

    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,

    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,

 

    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,

    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,

    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,

    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,

    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,

    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,

    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,

    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,

    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,

    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,

    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,

    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,

    $5005713C, $270241AA, $BE0B1010, $C90C2086,

    $5768B525, $206F85B3, $B966D409, $CE61E49F,

    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,

    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,

 

    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,

    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,

    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,

    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,

    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,

    $F762575D, $806567CB, $196C3671, $6E6B06E7,

    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,

    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,

    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,

    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,

    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,

    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,

    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,

    $CC0C7795, $BB0B4703, $220216B9, $5505262F,

    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,

    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,

 

    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,

    $9C0906A9, $EB0E363F, $72076785, $05005713,

    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,

    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,

    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,

    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,

    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,

    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,

    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,

    $A7672661, $D06016F7, $4969474D, $3E6E77DB,

    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,

    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,

    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,

    $BAD03605, $CDD70693, $54DE5729, $23D967BF,

    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,

    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);

 

type

//----------------------------------crc32----------------------------------

  {$IFDEF VER130}           // This is a bit awkward

    // 8-byte integer

    TInteger8 = Int64;     // Delphi 5

  {$ELSE}

  {$IFDEF VER120}

    TInteger8 = Int64;     // Delphi 4

  {$ELSE}

    TInteger8 = COMP;      // Delphi  2 or 3

  {$ENDIF}

  {$ENDIF}

//----------------------------------crc32----------------------------------

 

 

  // Use CalcCRC32 as a procedure so CRCValue can be passed in but

  // also returned. This allows multiple calls to CalcCRC32 for

  // the "same" CRC-32 calculation.

procedure CalcCRC32(p: Pointer; ByteCount: DWORD; var CRCValue: DWORD);

  // The following is a little cryptic (but executes very quickly).

  // The algorithm is as follows:

  // 1. exclusive-or the input byte with the low-order byte of

  // the CRC register to get an INDEX

  // 2. shift the CRC register eight bits to the right

  // 3. exclusive-or the CRC register with the contents of Table[INDEX]

  // 4. repeat steps 1 through 3 for all bytes

var

  i: DWORD;

  q: ^BYTE;

begin

  q := p;

  for i := 0 to ByteCount - 1 do

  begin

    CRCvalue := (CRCvalue shr 8) xor

      Table[q^ xor (CRCvalue and $000000FF)];

    Inc(q)

  end

end {CalcCRC32};

 

function CalcStringCRC32(s: string; out CRC32: DWORD): Boolean;

var

  CRC32Table: DWORD;

begin

  // Verify the table used to compute the CRCs has not been modified.

  // Thanks to Gary Williams for this suggestion, Jan. 2003.

  CRC32Table := $FFFFFFFF;

  CalcCRC32(Addr(Table[0]), SizeOf(Table), CRC32Table);

  CRC32Table := not CRC32Table;

 

  if CRC32Table <> $6FCF9E13 then ShowMessage('CRC32 Table CRC32 is ' +

      IntToHex(Crc32Table, 8) +

      ', expecting $6FCF9E13')

  else

  begin

    CRC32 := $FFFFFFFF; // To match PKZIP

    if Length(s) > 0  // Avoid access violation in D4

      then CalcCRC32(Addr(s[1]), Length(s), CRC32);

    CRC32 := not CRC32; // To match PKZIP

  end;

end;

 

procedure CalcFileCRC32(FromName: string; var CRCvalue: DWORD;

  var TotalBytes: TInteger8;

  var error: Word);

var

  Stream: TMemoryStream;

begin

  error := 0;

  CRCValue := $FFFFFFFF;

  Stream := TMemoryStream.Create;

  try

    try

      Stream.LoadFromFile(FromName);

      if Stream.Size > 0 then CalcCRC32(Stream.Memory, Stream.Size, CRCvalue)

      except

        on E: EReadError do

          error := 1

    end;

    CRCvalue := not CRCvalue

  finally

    Stream.Free

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

  s: string;

  CRC32: DWORD;

begin

  s := 'Test String';

  if CalcStringCRC32(s, CRC32) then

    ShowMessage(IntToStr(crc32));

end;

 

Delphi - .....................................

 

neoturk: ...Identifying a file through crc-32 ?...

// The constants here are for the CRC-32 generator

// polynomial, as defined in the Microsoft

// Systems Journal, March 1995, pp. 107-108

const

  Table: array[0..255] of DWORD =

    ($00000000, $77073096, $EE0E612C, $990951BA,

    $076DC419, $706AF48F, $E963A535, $9E6495A3,

    $0EDB8832, $79DCB8A4, $E0D5E91E, $97D2D988,

    $09B64C2B, $7EB17CBD, $E7B82D07, $90BF1D91,

    $1DB71064, $6AB020F2, $F3B97148, $84BE41DE,

    $1ADAD47D, $6DDDE4EB, $F4D4B551, $83D385C7,

    $136C9856, $646BA8C0, $FD62F97A, $8A65C9EC,

    $14015C4F, $63066CD9, $FA0F3D63, $8D080DF5,

    $3B6E20C8, $4C69105E, $D56041E4, $A2677172,

    $3C03E4D1, $4B04D447, $D20D85FD, $A50AB56B,

    $35B5A8FA, $42B2986C, $DBBBC9D6, $ACBCF940,

    $32D86CE3, $45DF5C75, $DCD60DCF, $ABD13D59,

    $26D930AC, $51DE003A, $C8D75180, $BFD06116,

    $21B4F4B5, $56B3C423, $CFBA9599, $B8BDA50F,

    $2802B89E, $5F058808, $C60CD9B2, $B10BE924,

    $2F6F7C87, $58684C11, $C1611DAB, $B6662D3D,

 

    $76DC4190, $01DB7106, $98D220BC, $EFD5102A,

    $71B18589, $06B6B51F, $9FBFE4A5, $E8B8D433,

    $7807C9A2, $0F00F934, $9609A88E, $E10E9818,

    $7F6A0DBB, $086D3D2D, $91646C97, $E6635C01,

    $6B6B51F4, $1C6C6162, $856530D8, $F262004E,

    $6C0695ED, $1B01A57B, $8208F4C1, $F50FC457,

    $65B0D9C6, $12B7E950, $8BBEB8EA, $FCB9887C,

    $62DD1DDF, $15DA2D49, $8CD37CF3, $FBD44C65,

    $4DB26158, $3AB551CE, $A3BC0074, $D4BB30E2,

    $4ADFA541, $3DD895D7, $A4D1C46D, $D3D6F4FB,

    $4369E96A, $346ED9FC, $AD678846, $DA60B8D0,

    $44042D73, $33031DE5, $AA0A4C5F, $DD0D7CC9,

    $5005713C, $270241AA, $BE0B1010, $C90C2086,

    $5768B525, $206F85B3, $B966D409, $CE61E49F,

    $5EDEF90E, $29D9C998, $B0D09822, $C7D7A8B4,

    $59B33D17, $2EB40D81, $B7BD5C3B, $C0BA6CAD,

 

    $EDB88320, $9ABFB3B6, $03B6E20C, $74B1D29A,

    $EAD54739, $9DD277AF, $04DB2615, $73DC1683,

    $E3630B12, $94643B84, $0D6D6A3E, $7A6A5AA8,

    $E40ECF0B, $9309FF9D, $0A00AE27, $7D079EB1,

    $F00F9344, $8708A3D2, $1E01F268, $6906C2FE,

    $F762575D, $806567CB, $196C3671, $6E6B06E7,

    $FED41B76, $89D32BE0, $10DA7A5A, $67DD4ACC,

    $F9B9DF6F, $8EBEEFF9, $17B7BE43, $60B08ED5,

    $D6D6A3E8, $A1D1937E, $38D8C2C4, $4FDFF252,

    $D1BB67F1, $A6BC5767, $3FB506DD, $48B2364B,

    $D80D2BDA, $AF0A1B4C, $36034AF6, $41047A60,

    $DF60EFC3, $A867DF55, $316E8EEF, $4669BE79,

    $CB61B38C, $BC66831A, $256FD2A0, $5268E236,

    $CC0C7795, $BB0B4703, $220216B9, $5505262F,

    $C5BA3BBE, $B2BD0B28, $2BB45A92, $5CB36A04,

    $C2D7FFA7, $B5D0CF31, $2CD99E8B, $5BDEAE1D,

 

    $9B64C2B0, $EC63F226, $756AA39C, $026D930A,

    $9C0906A9, $EB0E363F, $72076785, $05005713,

    $95BF4A82, $E2B87A14, $7BB12BAE, $0CB61B38,

    $92D28E9B, $E5D5BE0D, $7CDCEFB7, $0BDBDF21,

    $86D3D2D4, $F1D4E242, $68DDB3F8, $1FDA836E,

    $81BE16CD, $F6B9265B, $6FB077E1, $18B74777,

    $88085AE6, $FF0F6A70, $66063BCA, $11010B5C,

    $8F659EFF, $F862AE69, $616BFFD3, $166CCF45,

    $A00AE278, $D70DD2EE, $4E048354, $3903B3C2,

    $A7672661, $D06016F7, $4969474D, $3E6E77DB,

    $AED16A4A, $D9D65ADC, $40DF0B66, $37D83BF0,

    $A9BCAE53, $DEBB9EC5, $47B2CF7F, $30B5FFE9,

    $BDBDF21C, $CABAC28A, $53B39330, $24B4A3A6,

    $BAD03605, $CDD70693, $54DE5729, $23D967BF,

    $B3667A2E, $C4614AB8, $5D681B02, $2A6F2B94,

    $B40BBE37, $C30C8EA1, $5A05DF1B, $2D02EF8D);

 

type

//----------------------------------crc32----------------------------------

  {$IFDEF VER130}           // This is a bit awkward

    // 8-byte integer

    TInteger8 = Int64;     // Delphi 5

  {$ELSE}

  {$IFDEF VER120}

    TInteger8 = Int64;     // Delphi 4

  {$ELSE}

    TInteger8 = COMP;      // Delphi  2 or 3

  {$ENDIF}

  {$ENDIF}

//----------------------------------crc32----------------------------------

 

 

  // Use CalcCRC32 as a procedure so CRCValue can be passed in but

  // also returned. This allows multiple calls to CalcCRC32 for

  // the "same" CRC-32 calculation.

procedure CalcCRC32(p: Pointer; ByteCount: DWORD; var CRCValue: DWORD);

  // The following is a little cryptic (but executes very quickly).

  // The algorithm is as follows:

  // 1. exclusive-or the input byte with the low-order byte of

  // the CRC register to get an INDEX

  // 2. shift the CRC register eight bits to the right

  // 3. exclusive-or the CRC register with the contents of Table[INDEX]

  // 4. repeat steps 1 through 3 for all bytes

var

  i: DWORD;

  q: ^BYTE;

begin

  q := p;

  for i := 0 to ByteCount - 1 do

  begin

    CRCvalue := (CRCvalue shr 8) xor

      Table[q^ xor (CRCvalue and $000000FF)];

    Inc(q)

  end

end {CalcCRC32};

 

function CalcStringCRC32(s: string; out CRC32: DWORD): Boolean;

var

  CRC32Table: DWORD;

begin

  // Verify the table used to compute the CRCs has not been modified.

  // Thanks to Gary Williams for this suggestion, Jan. 2003.

  CRC32Table := $FFFFFFFF;

  CalcCRC32(Addr(Table[0]), SizeOf(Table), CRC32Table);

  CRC32Table := not CRC32Table;

 

  if CRC32Table <> $6FCF9E13 then ShowMessage('CRC32 Table CRC32 is ' +

      IntToHex(Crc32Table, 8) +

      ', expecting $6FCF9E13')

  else

  begin

    CRC32 := $FFFFFFFF; // To match PKZIP

    if Length(s) > 0  // Avoid access violation in D4

      then CalcCRC32(Addr(s[1]), Length(s), CRC32);

    CRC32 := not CRC32; // To match PKZIP

  end;

end;

 

procedure CalcFileCRC32(FromName: string; var CRCvalue: DWORD;

  var TotalBytes: TInteger8;

  var error: Word);

var

  Stream: TMemoryStream;

begin

  error := 0;

  CRCValue := $FFFFFFFF;

  Stream := TMemoryStream.Create;

  try

    try

      Stream.LoadFromFile(FromName);

      if Stream.Size > 0 then CalcCRC32(Stream.Memory, Stream.Size, CRCvalue)

      except

        on E: EReadError do

          error := 1

    end;

    CRCvalue := not CRCvalue

  finally

    Stream.Free

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

  s: string;

  CRC32: DWORD;

begin

  s := 'Test String';

  if CalcStringCRC32(s, CRC32) then

    ShowMessage(IntToStr(crc32));

end;

 

Delphi - .....................................

 

neoturk: ...Get the modify date of files ?...

function GetFileModifyDate(FileName: string): TDateTime;

var

  h: THandle;

  Struct: TOFSTRUCT;

  lastwrite: Integer;

  t: TDateTime;

begin

  h := OpenFile(PChar(FileName), Struct, OF_SHARE_DENY_NONE);

  try

    if h <> HFILE_ERROR then

    begin

      lastwrite := FileGetDate(h);

      Result    := FileDateToDateTime(lastwrite);

    end;

  finally

    CloseHandle(h);

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  if Opendialog1.Execute then

    label1.Caption := FormatDateTime('dddd, d. mmmm yyyy hh:mm:ss',

      GetFileModifyDate(Opendialog1.FileName));

end;

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol