获取程序自身大小的2个函数

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}////网友修改后
function GetFileSize(const FileName: string): Int64;
var
  SR: TSearchRec;
begin
  Result := -1;
  if FindFirst(FileName, faAnyFile and (not faDirectory), SR) = 0 then
  try
    Result := SR.Size;
  finally
    FindClose(SR);
  end;
end;

//万老师 原函数
function GetExeSize: Int64;
var
  SearchRec: TSearchRec;
begin
  Result := -1;
  if FindFirst(Application.ExeName, faAnyFile, SearchRec) = 0 then
    Result := SearchRec.Size;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:= ‘万一的方法结果:‘ + IntToStr(getExesize);
Edit2.Text:= ‘在野修正后结果:‘ + IntToStr(GetFileSize(Application.ExeName));
end;

end.
时间: 2024-12-25 14:24:55

获取程序自身大小的2个函数的相关文章

delphi根据进程PID获取程序所在路径的函数(用OpenProcess取得句柄,用GetModuleFileNameEx取得程序名)

uses psapi; {根据进程PID获取程序所在路径的函数}function GetProcessExePath(PID: Cardinal): string;varpHandle: THandle;buf: array[0..MAX_PATH] of Char;begin{获取进程句柄}pHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID);{获取进程路径}GetModuleFileN

unicode string和ansi string的转换函数及获取程序运行路径的代码

#pragma once#include <string> namespace stds { class tool { public: std::string ws2s(const std::wstring& ws) { std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C"; setlocale(LC_ALL, "chs"); const wchar_t* _Sou

程序运行时间测试 - 使用系统函数 getrusage 获取程序运行时间

https://github.com/yaowenxu/Workplace/blob/master/timer/getrusagetimer.c 关键结构体: struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ long ru_maxrss; /* max resident set size */ long ru_ixrss; /

时间获取程序服务器 TCP 协议相关性

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 最初代码: 这是一个简单的时间获取服务器程序.它和时间获取程序客户端一道工作. TCP/IPv4, IPv6 协议相关 IPv4 --> IPv6 (把代码中出现的左边的字符串换为右边的,就变成了IPv6版本的) sockaddr_in --> sockaddr_in6 AF_INET --> AF_INET6 sin_family --> sin6_family sin_p

【转】c++ 获取程序运行时间

转自:http://blog.csdn.net/ghevinn/article/details/22800059 DWORD start_time=GetTickCount(); {...} DWORD end_time=GetTickCount(); DWORD Subtime = (end_time-start_time); int k = 0; 如何获取代码运行时间 在调试中,经常需要计算某一段代码的执行时间,下面给出两种常用的方式: 第一种:使用GetTickCount函数 #inclu

MFC - 获取程序当前路径

1 // 2 // 函数 -- GetAppPath() 3 // 4 // 功能 -- 获取程序的当前路径(路径中带"\\", 不含执行文件名称"\\xx.exe") 5 // 6 // 注释 -- 7 // <1>. #include <direct.h> 8 // <2>. _getcwd(); 获取程序当前路径 9 // 10 CString GetAppPath() 11 { 14 char szPath[100]; 1

SUID或SGID程序中能不能用system函数

system()函数的声明和说明如下: 注意它的描述那里,system()执行一个由command参数定义的命令,通过调用/bin/sh -c命令来实现这个功能.也就是说它的逻辑是这样的! 进程调用system函数,system函数调用fork创建一个子进程,然后再调用exec函数来把这个子进程的正文段替换成/bin/sh命令的正文段.然后再由sh来执行exec将程序的正文段替换成command参数所代表的命令的正文段,例如,我的一个程序a.out来调用system函数来执行sleep 20命令

android怎么获取自身apk大小?

很久没更新博客了,前不久看到看到公司的项目中获取app自身大小还是从服务器端反回回来的,还不能用.这么xxx不说了.下面就看看怎么获取自身app的大小的. 注:此处只是获取自己的apk的大小. 首先我们需要的是权限: <uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/> 接下来当然是获取PackageManager了啊: PackageManager mPackageManager=get

linux 内核源代码分析 - 获取数组的大小

#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) 測试程序: #include<stdio.h> #include<stdlib.h> struct dev { int a; char b; float c; }; struct dev devs[]= { { 1,'a',7.0, }, { 1,'a',7.0, }, { 1,'a',7.0, }, }; int main() { printf("int is %d \