Programlama yapalım ve Öğrenelim. - Delphi Eğitim179
  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: ...Use the shell function to copy-move a file ?...

uses

  ShellApi;

 

procedure ShellFileOperation(fromFile: string; toFile: string; Flags: Integer);

var

  shellinfo: TSHFileOpStructA;

begin

  with shellinfo do

  begin

    wnd   := Application.Handle;

    wFunc := Flags;

    pFrom := PChar(fromFile);

    pTo   := PChar(toFile);

  end;

  SHFileOperation(shellinfo);

end;

 

 

// Example, Beispiel:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  ShellFileOperation('c:afile.txt', 'd:afile2.txt', FO_COPY);

  // To Move a file: FO_MOVE

end;

 

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

 

neoturk: ...Get-set the date of a folder ?...

function GetFolderDate(Folder: string): TDateTime;

var

  Rec: TSearchRec;

  Found: Integer;

  Date: TDateTime;

begin

  if Folder[Length(folder)] = '' then

    Delete(Folder, Length(folder), 1);

  Result := 0;

  Found  := FindFirst(Folder, faDirectory, Rec);

  try

    if Found = 0 then

    begin

      Date   := FileDateToDateTime(Rec.Time);

      Result := Date;

    end;

  finally

    FindClose(Rec);

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

  d: TDateTime;

begin

  d := GetFolderDate('C:WINNT');

  ShowMessage(FormatDateTime('dddd, d. mmmm yyyy, hh:mm:ss', d));

end;

 

 

{ Sets the time for both files and directories }

{ for NT }

 

function NT_SetDateTime(FileName: string; dtCreation, dtLastAccessTime, dtLastWriteTime: TDateTime): Boolean;

// by Nicholas Robinson

var

  hDir: THandle;

  ftCreation: TFiletime;

  ftLastAccessTime: TFiletime;

  ftLastWriteTime: TFiletime;

 

  function DTtoFT(dt: TDateTime): TFiletime;

  var

    dwft: DWORD;

    ft: TFiletime;

  begin

    dwft := DateTimeToFileDate(dt);

    DosDateTimeToFileTime(LongRec(dwft).Hi, LongRec(dwft).Lo, ft);

    LocalFileTimeToFileTime(ft, Result);

  end;

 

begin

  hDir := CreateFile(PChar(FileName),

                     GENERIC_READ or GENERIC_WRITE,

                     0,

                     nil,

                     OPEN_EXISTING,

                     FILE_FLAG_BACKUP_SEMANTICS,

                     0);

  if hDir <> INVALID_HANDLE_VALUE then

  begin

    try

      ftCreation       := DTtoFT(dtCreation);

      ftLastAccessTime := DTtoFT(dtLastAccessTime);

      ftLastWriteTime  := DTtoFT(dtLastWriteTime);

      Result := SetFileTime(hDir, @ftCreation, @ftLastAccessTime, @ftLastWriteTime);

    finally

      CloseHandle(hDir);

    end;

  end

  else

    Result := False;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

  NT_SetDateTime('c:tempMyFolder', now, now, now);

end;

 

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

 

neoturk: ...Get-set the date of a folder ?...

function GetFolderDate(Folder: string): TDateTime;

var

  Rec: TSearchRec;

  Found: Integer;

  Date: TDateTime;

begin

  if Folder[Length(folder)] = '' then

    Delete(Folder, Length(folder), 1);

  Result := 0;

  Found  := FindFirst(Folder, faDirectory, Rec);

  try

    if Found = 0 then

    begin

      Date   := FileDateToDateTime(Rec.Time);

      Result := Date;

    end;

  finally

    FindClose(Rec);

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

  d: TDateTime;

begin

  d := GetFolderDate('C:WINNT');

  ShowMessage(FormatDateTime('dddd, d. mmmm yyyy, hh:mm:ss', d));

end;

 

 

{ Sets the time for both files and directories }

{ for NT }

 

function NT_SetDateTime(FileName: string; dtCreation, dtLastAccessTime, dtLastWriteTime: TDateTime): Boolean;

// by Nicholas Robinson

var

  hDir: THandle;

  ftCreation: TFiletime;

  ftLastAccessTime: TFiletime;

  ftLastWriteTime: TFiletime;

 

  function DTtoFT(dt: TDateTime): TFiletime;

  var

    dwft: DWORD;

    ft: TFiletime;

  begin

    dwft := DateTimeToFileDate(dt);

    DosDateTimeToFileTime(LongRec(dwft).Hi, LongRec(dwft).Lo, ft);

    LocalFileTimeToFileTime(ft, Result);

  end;

 

begin

  hDir := CreateFile(PChar(FileName),

                     GENERIC_READ or GENERIC_WRITE,

                     0,

                     nil,

                     OPEN_EXISTING,

                     FILE_FLAG_BACKUP_SEMANTICS,

                     0);

  if hDir <> INVALID_HANDLE_VALUE then

  begin

    try

      ftCreation       := DTtoFT(dtCreation);

      ftLastAccessTime := DTtoFT(dtLastAccessTime);

      ftLastWriteTime  := DTtoFT(dtLastWriteTime);

      Result := SetFileTime(hDir, @ftCreation, @ftLastAccessTime, @ftLastWriteTime);

    finally

      CloseHandle(hDir);

    end;

  end

  else

    Result := False;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

  NT_SetDateTime('c:tempMyFolder', now, now, now);

end;

 

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

 

neoturk: ...Search a file for a specified text ?...

function ScanFile(const FileName: string;

  const forString: string;

  caseSensitive: Boolean): Longint;

  { returns position of string in file or -1, if not found }

const

  BufferSize = $8001;  { 32K+1 bytes }

var

  pBuf, pEnd, pScan, pPos: PChar;

  filesize: LongInt;

  bytesRemaining: LongInt;

  bytesToRead: Word;

  F: file;

  SearchFor: PChar;

  oldMode: Word;

begin

  Result := -1;  { assume failure }

  if (Length(forString) = 0) or (Length(FileName) = 0) then Exit;

  SearchFor := nil;

  pBuf      := nil;

 

  { open file as binary, 1 byte recordsize }

  AssignFile(F, FileName);

  oldMode  := FileMode;

  FileMode := 0;    { read-only access }

  Reset(F, 1);

  FileMode := oldMode;

  try { allocate memory for buffer and pchar search string }

    SearchFor := StrAlloc(Length(forString) + 1);

    StrPCopy(SearchFor, forString);

    if not caseSensitive then  { convert to upper case }

      AnsiUpper(SearchFor);

    GetMem(pBuf, BufferSize);

    filesize       := System.Filesize(F);

    bytesRemaining := filesize;

    pPos           := nil;

    while bytesRemaining > 0 do

    begin

      { calc how many bytes to read this round }

      if bytesRemaining >= BufferSize then

        bytesToRead := Pred(BufferSize)

      else

        bytesToRead := bytesRemaining;

 

      { read a buffer full and zero-terminate the buffer }

      BlockRead(F, pBuf^, bytesToRead, bytesToRead);

      pEnd  := @pBuf[bytesToRead];

      pEnd^ := #0;

       { scan the buffer. Problem: buffer may contain #0 chars! So we

         treat it as a concatenation of zero-terminated strings. }

      pScan := pBuf;

      while pScan < pEnd do

      begin

        if not caseSensitive then { convert to upper case }

          AnsiUpper(pScan);

        pPos := StrPos(pScan, SearchFor);  { search for substring }

        if pPos <> nil then

        begin { Found it! }

          Result := FileSize - bytesRemaining +

            Longint(pPos) - Longint(pBuf);

          Break;

        end;

        pScan := StrEnd(pScan);

        Inc(pScan);

      end;

      if pPos <> nil then Break;

      bytesRemaining := bytesRemaining - bytesToRead;

      if bytesRemaining > 0 then

      begin

       { no luck in this buffers load. We need to handle the case of

         the search string spanning two chunks of file now. We simply

         go back a bit in the file and read from there, thus inspecting

         some characters twice

       }

        Seek(F, FilePos(F) - Length(forString));

        bytesRemaining := bytesRemaining + Length(forString);

      end;

    end; { While }

  finally

    CloseFile(F);

    if SearchFor <> nil then StrDispose(SearchFor);

    if pBuf <> nil then FreeMem(pBuf, BufferSize);

  end;

end; { ScanFile }

 

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

 

neoturk: ...Search a file for a specified text ?...

function ScanFile(const FileName: string;

  const forString: string;

  caseSensitive: Boolean): Longint;

  { returns position of string in file or -1, if not found }

const

  BufferSize = $8001;  { 32K+1 bytes }

var

  pBuf, pEnd, pScan, pPos: PChar;

  filesize: LongInt;

  bytesRemaining: LongInt;

  bytesToRead: Word;

  F: file;

  SearchFor: PChar;

  oldMode: Word;

begin

  Result := -1;  { assume failure }

  if (Length(forString) = 0) or (Length(FileName) = 0) then Exit;

  SearchFor := nil;

  pBuf      := nil;

 

  { open file as binary, 1 byte recordsize }

  AssignFile(F, FileName);

  oldMode  := FileMode;

  FileMode := 0;    { read-only access }

  Reset(F, 1);

  FileMode := oldMode;

  try { allocate memory for buffer and pchar search string }

    SearchFor := StrAlloc(Length(forString) + 1);

    StrPCopy(SearchFor, forString);

    if not caseSensitive then  { convert to upper case }

      AnsiUpper(SearchFor);

    GetMem(pBuf, BufferSize);

    filesize       := System.Filesize(F);

    bytesRemaining := filesize;

    pPos           := nil;

    while bytesRemaining > 0 do

    begin

      { calc how many bytes to read this round }

      if bytesRemaining >= BufferSize then

        bytesToRead := Pred(BufferSize)

      else

        bytesToRead := bytesRemaining;

 

      { read a buffer full and zero-terminate the buffer }

      BlockRead(F, pBuf^, bytesToRead, bytesToRead);

      pEnd  := @pBuf[bytesToRead];

      pEnd^ := #0;

       { scan the buffer. Problem: buffer may contain #0 chars! So we

         treat it as a concatenation of zero-terminated strings. }

      pScan := pBuf;

      while pScan < pEnd do

      begin

        if not caseSensitive then { convert to upper case }

          AnsiUpper(pScan);

        pPos := StrPos(pScan, SearchFor);  { search for substring }

        if pPos <> nil then

        begin { Found it! }

          Result := FileSize - bytesRemaining +

            Longint(pPos) - Longint(pBuf);

          Break;

        end;

        pScan := StrEnd(pScan);

        Inc(pScan);

      end;

      if pPos <> nil then Break;

      bytesRemaining := bytesRemaining - bytesToRead;

      if bytesRemaining > 0 then

      begin

       { no luck in this buffers load. We need to handle the case of

         the search string spanning two chunks of file now. We simply

         go back a bit in the file and read from there, thus inspecting

         some characters twice

       }

        Seek(F, FilePos(F) - Length(forString));

        bytesRemaining := bytesRemaining + Length(forString);

      end;

    end; { While }

  finally

    CloseFile(F);

    if SearchFor <> nil then StrDispose(SearchFor);

    if pBuf <> nil then FreeMem(pBuf, BufferSize);

  end;

end; { ScanFile }

 

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

 

neoturk: ...Compress, decompress a stream ?...

uses

  ZLib;

 

{ Compress a stream }

 

procedure CompressStream(inpStream, outStream: TStream);

var

  InpBuf, OutBuf: Pointer;

  InpBytes, OutBytes: Integer;

begin

  InpBuf := nil;

  OutBuf := nil;

  try

    GetMem(InpBuf, inpStream.Size);

    inpStream.Position := 0;

    InpBytes := inpStream.Read(InpBuf^, inpStream.Size);

    CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);

    outStream.Write(OutBuf^, OutBytes);

  finally

    if InpBuf <> nil then FreeMem(InpBuf);

    if OutBuf <> nil then FreeMem(OutBuf);

  end;

end;

 

 

{ Decompress a stream }

procedure DecompressStream(inpStream, outStream: TStream);

var

  InpBuf, OutBuf: Pointer;

  OutBytes, sz: Integer;

begin

  InpBuf := nil;

  OutBuf := nil;

  sz     := inpStream.Size - inpStream.Position;

  if sz > 0 then

    try

      GetMem(InpBuf, sz);

      inpStream.Read(InpBuf^, sz);

      DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);

      outStream.Write(OutBuf^, OutBytes);

    finally

      if InpBuf <> nil then FreeMem(InpBuf);

      if OutBuf <> nil then FreeMem(OutBuf);

    end;

  outStream.Position := 0;

end;

 

 

{

  Example:

   Compress the contents of RichEdit1 and

   calculate the compression rate.

   Then save the stream to a file (ms2.dat)

 

  Beispiel:

   Komprimiert den Inhalt von RichEdit1 und

   berechnet die Kompressionsrate.

   Dann wird der Stream in eine Datei (ms2.dat) gespeichert.

}

 

procedure TForm1.Button1Click(Sender: TObject);

var

  ms1, ms2: TMemoryStream;

begin

  ms1 := TMemoryStream.Create;

  try

    ms2 := TMemoryStream.Create;

    try

      RichEdit1.Lines.SaveToStream(ms1);

      CompressStream(ms1, ms2);

      ShowMessage(Format('Stream Compression Rate: %d %%',

        [round(100 / ms1.Size * ms2.Size)]));

      ms2.SaveToFile('C:ms2.dat');

    finally

      ms1.Free;

    end;

  finally

    ms2.Free;

  end;

end;

 

{

  Loads the stream from a file (ms2.dat)

  and decompresses it.

  Then loads the Stream to RichEdit1.

 

  Lädt den komprimierten Stream von einer Datei (ms2.dat)

  und dekomprimiert ihn.

  Dann wird der Stream wieder in RichEdit1 geladen.

}

 

procedure TForm1.Button2Click(Sender: TObject);

var

  ms1, ms2: TMemoryStream;

begin

  ms1 := TMemoryStream.Create;

  try

    ms2 := TMemoryStream.Create;

    try

      ms1.LoadFromFile('C:ms2.dat');

      DecompressStream(ms1, ms2);

      RichEdit1.Lines.LoadFromStream(ms2);

    finally

      ms1.Free;

    end;

  finally

    ms2.Free;

  end;

end;

 

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

 

neoturk: ...Compress, decompress a stream ?...

uses

  ZLib;

 

{ Compress a stream }

 

procedure CompressStream(inpStream, outStream: TStream);

var

  InpBuf, OutBuf: Pointer;

  InpBytes, OutBytes: Integer;

begin

  InpBuf := nil;

  OutBuf := nil;

  try

    GetMem(InpBuf, inpStream.Size);

    inpStream.Position := 0;

    InpBytes := inpStream.Read(InpBuf^, inpStream.Size);

    CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);

    outStream.Write(OutBuf^, OutBytes);

  finally

    if InpBuf <> nil then FreeMem(InpBuf);

    if OutBuf <> nil then FreeMem(OutBuf);

  end;

end;

 

 

{ Decompress a stream }

procedure DecompressStream(inpStream, outStream: TStream);

var

  InpBuf, OutBuf: Pointer;

  OutBytes, sz: Integer;

begin

  InpBuf := nil;

  OutBuf := nil;

  sz     := inpStream.Size - inpStream.Position;

  if sz > 0 then

    try

      GetMem(InpBuf, sz);

      inpStream.Read(InpBuf^, sz);

      DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);

      outStream.Write(OutBuf^, OutBytes);

    finally

      if InpBuf <> nil then FreeMem(InpBuf);

      if OutBuf <> nil then FreeMem(OutBuf);

    end;

  outStream.Position := 0;

end;

 

 

{

  Example:

   Compress the contents of RichEdit1 and

   calculate the compression rate.

   Then save the stream to a file (ms2.dat)

 

  Beispiel:

   Komprimiert den Inhalt von RichEdit1 und

   berechnet die Kompressionsrate.

   Dann wird der Stream in eine Datei (ms2.dat) gespeichert.

}

 

procedure TForm1.Button1Click(Sender: TObject);

var

  ms1, ms2: TMemoryStream;

begin

  ms1 := TMemoryStream.Create;

  try

    ms2 := TMemoryStream.Create;

    try

      RichEdit1.Lines.SaveToStream(ms1);

      CompressStream(ms1, ms2);

      ShowMessage(Format('Stream Compression Rate: %d %%',

        [round(100 / ms1.Size * ms2.Size)]));

      ms2.SaveToFile('C:ms2.dat');

    finally

      ms1.Free;

    end;

  finally

    ms2.Free;

  end;

end;

 

{

  Loads the stream from a file (ms2.dat)

  and decompresses it.

  Then loads the Stream to RichEdit1.

 

  Lädt den komprimierten Stream von einer Datei (ms2.dat)

  und dekomprimiert ihn.

  Dann wird der Stream wieder in RichEdit1 geladen.

}

 

procedure TForm1.Button2Click(Sender: TObject);

var

  ms1, ms2: TMemoryStream;

begin

  ms1 := TMemoryStream.Create;

  try

    ms2 := TMemoryStream.Create;

    try

      ms1.LoadFromFile('C:ms2.dat');

      DecompressStream(ms1, ms2);

      RichEdit1.Lines.LoadFromStream(ms2);

    finally

      ms1.Free;

    end;

  finally

    ms2.Free;

  end;

end;

 

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

 

neoturk: ...Add data to a compiled exe-file ?...

function AttachToFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;

var

  aStream: TFileStream;

  iSize: Integer;

begin

  Result := False;

  if not FileExists(AFileName) then

    Exit;

  try

    aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite);

    MemoryStream.Seek(0, soFromBeginning);

    // seek to end of File

    // ans Ende der Datei Seeken

    aStream.Seek(0, soFromEnd);

    // copy data from MemoryStream

    // Daten vom MemoryStream kopieren

    aStream.CopyFrom(MemoryStream, 0);

    // save Stream-Size

    // die Streamgröße speichern

    iSize := MemoryStream.Size + SizeOf(Integer);

    aStream.Write(iSize, SizeOf(iSize));

  finally

    aStream.Free;

  end;

  Result := True;

end;

 

function LoadFromFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;

var

  aStream: TFileStream;

  iSize: Integer;

begin

  Result := False;

  if not FileExists(AFileName) then

    Exit;

 

  try

    aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);

    // seek to position where Stream-Size is saved

    // zur Position seeken wo Streamgröße gespeichert

    aStream.Seek(-SizeOf(Integer), soFromEnd);

    aStream.Read(iSize, SizeOf(iSize));

    if iSize > aStream.Size then

    begin

      aStream.Free;

      Exit;

    end;

    // seek to position where data is saved

    // zur Position seeken an der die Daten abgelegt sind

    aStream.Seek(-iSize, soFromEnd);

    MemoryStream.SetSize(iSize - SizeOf(Integer));

    MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize));

    MemoryStream.Seek(0, soFromBeginning);

  finally

    aStream.Free;

  end;

  Result := True;

end;

 

procedure TForm1.SaveClick(Sender: TObject);

var

  aStream: TMemoryStream;

begin

  aStream := TMemoryStream.Create;

  Memo1.Lines.SaveToStream(aStream);

  AttachToFile('Test.exe', aStream);

  aStream.Free;

end;

 

procedure TForm1.LoadClick(Sender: TObject);

var

  aStream: TMemoryStream;

begin

  aStream := TMemoryStream.Create;

  LoadFromFile('Test.exe', aStream);

  Memo1.Lines.LoadFromStream(aStream);

  aStream.Free;

end;

 

{

 

Note:

 

You can't proof whether additional data is attached or not.

To reach this, you would have to create a checksumm of the

MemoryStream and attach it.

 

 

Hinweis:

 

Es kann nicht überprüft werden ob zusätzliche Daten in der Datei

vorhanden sind. Um das zu erreichen müsste man eine Checksumme des MemoryStreams

erzeugen und ebenfalls anhängen.

 

}

 

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

 

neoturk: ...Add data to a compiled exe-file ?...

function AttachToFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;

var

  aStream: TFileStream;

  iSize: Integer;

begin

  Result := False;

  if not FileExists(AFileName) then

    Exit;

  try

    aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite);

    MemoryStream.Seek(0, soFromBeginning);

    // seek to end of File

    // ans Ende der Datei Seeken

    aStream.Seek(0, soFromEnd);

    // copy data from MemoryStream

    // Daten vom MemoryStream kopieren

    aStream.CopyFrom(MemoryStream, 0);

    // save Stream-Size

    // die Streamgröße speichern

    iSize := MemoryStream.Size + SizeOf(Integer);

    aStream.Write(iSize, SizeOf(iSize));

  finally

    aStream.Free;

  end;

  Result := True;

end;

 

function LoadFromFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;

var

  aStream: TFileStream;

  iSize: Integer;

begin

  Result := False;

  if not FileExists(AFileName) then

    Exit;

 

  try

    aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);

    // seek to position where Stream-Size is saved

    // zur Position seeken wo Streamgröße gespeichert

    aStream.Seek(-SizeOf(Integer), soFromEnd);

    aStream.Read(iSize, SizeOf(iSize));

    if iSize > aStream.Size then

    begin

      aStream.Free;

      Exit;

    end;

    // seek to position where data is saved

    // zur Position seeken an der die Daten abgelegt sind

    aStream.Seek(-iSize, soFromEnd);

    MemoryStream.SetSize(iSize - SizeOf(Integer));

    MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize));

    MemoryStream.Seek(0, soFromBeginning);

  finally

    aStream.Free;

  end;

  Result := True;

end;

 

procedure TForm1.SaveClick(Sender: TObject);

var

  aStream: TMemoryStream;

begin

  aStream := TMemoryStream.Create;

  Memo1.Lines.SaveToStream(aStream);

  AttachToFile('Test.exe', aStream);

  aStream.Free;

end;

 

procedure TForm1.LoadClick(Sender: TObject);

var

  aStream: TMemoryStream;

begin

  aStream := TMemoryStream.Create;

  LoadFromFile('Test.exe', aStream);

  Memo1.Lines.LoadFromStream(aStream);

  aStream.Free;

end;

 

{

 

Note:

 

You can't proof whether additional data is attached or not.

To reach this, you would have to create a checksumm of the

MemoryStream and attach it.

 

 

Hinweis:

 

Es kann nicht überprüft werden ob zusätzliche Daten in der Datei

vorhanden sind. Um das zu erreichen müsste man eine Checksumme des MemoryStreams

erzeugen und ebenfalls anhängen.

 

}

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