⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saving.pas

📁 httpanalyzer, source code for delphi
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit saving;

// Neue Version mit Exceptions statt showmessage

interface
uses classes, SysUtils, checklst;

type
 ESavingError = class(Exception);

type TStrArray= Array Of String;
procedure Split(Input: string; const Delimiter: Char; const Strings: TStrings) ;  overload;
function Split(S: String; Delimiter: Char):  TStrArray; overload;

function paramX(strin : string; nr : integer; trennzeichen : char) : string; //0 = erster eintrag usw.
function param(strin : string; nr : integer) : string; // Trennzeichen= #09 (TAB)

function get_last_modified(p : pchar; VAR date_str : string) : boolean;
function get_last_Etag(p : pchar; VAR etag_str : string) : boolean;


function savepointer(rec_p : pointer; rec_s: longint; filename : string) : boolean;
function loadpointer(var rec_p : pointer; var rec_s : longint; filename : string) : boolean;  overload;
function loadpointer(var rec_p : pchar; var rec_s : longword; filename : string) : boolean; overload;


procedure LoadPchar(VAR p : pchar; VAR s : longint; filename : string);
function LoadList(Var vlist : TStringList; filename : string) : boolean;

procedure SaveList(Var vlist : Tstringlist; filename : string);
procedure SavePchar(p : pchar; filename : string);


function LoadHtmlCache(VAR p :pchar; VAR s : longint; filename : string;
                    VAR date_out : string; VAR etag_out : string) : boolean;

function SaveHtmlCache(p : pchar; s : longint; filename : string) : boolean;

procedure saveCheckListBox(Var vlistbox : TCheckListbox; filename : string);
procedure loadCheckListBox(Var vlistbox : TCheckListbox; filename : string);

procedure SetCheckListbox(VAR vlistbox : TCheckListBox; VAR vlist : TStringList);
procedure getCheckListbox(VAR vlistbox : TCheckListBox; VAR vlist : TStringList);

//procedure PathExtractElements(const Source: string; var Drive, Path, FileName, Ext: string);

implementation


(*
procedure PathExtractElements(const Source: string; var Drive, Path, FileName, Ext: string);
begin
  Drive := ExtractFileDrive(Source);
  Path := ExtractFilePath(Source);
  // Path includes drive so remove that
  if Drive <> '' then
    Delete(Path, 1, Length(Drive));
  // add/remove separators
  Drive := PathAddSeparator(Drive);
  Path := PathRemoveSeparator(Path);
  if (Path <> '') and (Path[1] = PathSeparator) then
    Delete(Path, 1, 1);
  // and extract the remaining elements
  FileName := PathExtractFileNameNoExt(Source);
  Ext := ExtractFileExt(Source);
end;
  *)

function paramX(strin : string; nr : integer; trennzeichen : char) : string; //0 = erster eintrag usw.
var za1,i,l : integer;
    bufs : string;
begin;

za1:=0;
i:=0; l:=length(strin);
bufs:='';

if nr>0 then begin;
 repeat
  i:=i+1;
  if i<=l then begin;
   if strin[i]=trennzeichen then inc(za1);
  end;

 until (za1=nr) or (i>l);
end;

if i<l then begin;
 repeat
  i:=i+1;
  if strin[i]<>trennzeichen then bufs:=bufs+strin[i] else i:=l;
 until i>=l;
end;
paramX:=bufs;

end;



function param(strin : string; nr : integer) : string; //0 = erster eintrag usw.
var za1,i,l : integer;
    bufs : string;
begin;

za1:=0;
i:=0; l:=length(strin);
bufs:='';

if nr>0 then begin;
 repeat
  i:=i+1;
  if i<=l then begin;
   if strin[i]=chr(09) then inc(za1);
  end;

 until (za1=nr) or (i>l);
end;

if i<l then begin;
 repeat
  i:=i+1;
  if strin[i]<>chr(09) then bufs:=bufs+strin[i] else i:=l;
 until i>=l;
end;
param:=bufs;

end;


function savepointer(rec_p : pointer; rec_s: longint; filename : string) : boolean;
var f : file;
    AmtTransferred : integer;
    bufio : integer;
begin;
if (rec_p<>NIL) and (rec_s>0) then begin
savepointer:=true;
{$I-}
assignfile(f,filename);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 savepointer:=false;
 raise ESavingError.create('savepointer: Fehler '+inttostr(bufio)+' = Keine Dateizuordnung m鰃lich');
 exit;
end;
{$I-}
rewrite(f,1);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 savepointer:=false;
 raise ESavingError.Create('savepointer: Fehler '+inttostr(bufio)+' = Kein Schreibzugriff m鰃lich');
 exit;
end;

{$I-}
blockwrite(f,rec_p^, rec_s,AmtTransferred);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 savepointer:=false;
 raise ESavingError.Create('savepointer: Fehler '+inttostr(bufio)+' = I/O Fehler');
end;
if AmtTransferred<>rec_s then raise ESavingError.Create('savepointer: Fehler '+inttostr(bufio)+' = Konnte nicht alle Daten sichern');
{$I-}
closefile(f);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 savepointer:=false;
 raise ESavingError.Create('savepointer: Fehler '+inttostr(bufio)+' = Datei kann nicht geschlossen werden');
end;
end
else begin
  savepointer:=false;
  raise ESavingError.Create('savepointer:  Fehler: Noch keine Daten empfangen');
end;
end;


function loadpointer(var rec_p : pointer; var rec_s: longint; filename : string) : boolean;
var f : file;
    AmtTransferred : integer;
    bufio : integer;
begin;

loadpointer:=true;
{$I-}
assignfile(f,filename);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Keine Dateizuordnung m鰃lich');
 exit;
end;
{$I-}
reset(f,1);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Kein Lesezugriff m鰃lich');
 exit;
end;
rec_s:=filesize(f);
if rec_s>0 then begin
getmem(rec_p, rec_s);
{$I-}
blockread(f,rec_p^, rec_s,AmtTransferred);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = I/O Fehler');
end;
if AmtTransferred<>rec_s then raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Konnte nicht alle Daten laden');
{$I-}
closefile(f);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Datei kann nicht geschlossen werden');
end;
end
else begin
  loadpointer:=false;
  raise ESavingError.Create('loadpointer:  Datei scheint leer zu sein');
end;
end;


function loadpointer(var rec_p : pchar; var rec_s: longword; filename : string) : boolean;
var f : file;
    AmtTransferred : longword;
    bufio : integer;
begin;

loadpointer:=true;
{$I-}
assignfile(f,filename);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Keine Dateizuordnung m鰃lich');
 exit;
end;
{$I-}
reset(f,1);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Kein Lesezugriff m鰃lich');
 exit;
end;
rec_s:=filesize(f);
if rec_s>0 then begin
getmem(rec_p, rec_s);
{$I-}
blockread(f,rec_p^, rec_s,AmtTransferred);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = I/O Fehler');
end;
if AmtTransferred<>rec_s then raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Konnte nicht alle Daten laden');
{$I-}
closefile(f);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 loadpointer:=false;
 raise ESavingError.Create('loadpointer: Fehler '+inttostr(bufio)+' = Datei kann nicht geschlossen werden');
end;
end
else begin
  loadpointer:=false;
  raise ESavingError.Create('loadpointer:  Datei scheint leer zu sein');
end;
end;



function get_last_Etag(p : pchar; VAR etag_str : string) : boolean;
const
 C_MATCH = 'ETag: '; // ANSWER
var
 pstart : pchar;
 za1 : integer;
begin;
 get_last_etag:=true;
 etag_str:='';
 pstart:=strpos(p,PCHAR(C_MATCH));
 if pstart<>NIL then begin

  za1:=length(C_MATCH)-1;
  repeat
    za1:=za1+1;
    if pstart[za1]<>#13 then etag_str:=etag_str+pstart[za1];
  until (pstart[za1]=#13) or (za1=strlen(pstart));

end else get_last_etag:=false;
end;




function get_last_modified(p : pchar; VAR date_str : string) : boolean;
const
 C_MODIFIED = 'Last-Modified: ';
var
 pstart : pchar;
 za1 : integer;
begin;
 get_last_modified:=true;
 date_str:='';
 pstart:=strpos(p,PCHAR(C_MODIFIED));
 if pstart<>NIL then begin

  za1:=length(C_MODIFIED)-1;
  repeat
    za1:=za1+1;
    if pstart[za1]<>#13 then date_str:=date_str+pstart[za1];
  until (pstart[za1]=#13) or (za1=strlen(pstart));

end else get_last_modified:=false;
end;


function LoadHtmlCache(VAR p :pchar; VAR s : longint; filename : string;
                    VAR date_out : string; VAR etag_out : string) : boolean;
var f : file;
    AmtTransferred : integer;
    bufio : integer;

begin;
LoadHtmlCache:=true;
p:=NIL;
s:=0;
date_out:='';
etag_out:='';

{$I-}
assignfile(f,filename);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 LoadHtmlCache:=false;
 raise ESavingError.Create('LoadHtmlCache: Fehler '+inttostr(bufio)+' = Keine Dateizuordnung m鰃lich');
 exit;
end;
{$I-}
reset(f,1);
{$I+}
bufio:=IOResult;
if bufio<>0 then begin;
 LoadHtmlCache:=false;
 raise ESavingError.Create('LoadHtmlCache: Fehler '+inttostr(bufio)+' = Kein Lesezugriff m鰃lich');
 exit;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -