Cinco dicas de verificações no Delphi

1 - Verificando o seu endereço IP
A fonte do projeto principal ficará algo como:

implementation

uses Winsock;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  wVersionRequested : WORD;
  wsaData : TWSAData;
begin
  wVersionRequested := MAKEWORD(1, 1);
  WSAStartup(wVersionRequested, wsaData);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  WSACleanup;
end;

procedure TForm1.BtnIPClick(Sender: TObject);
var
  p : PHostEnt;
  s : array[0..128] of char;
  p2 : pchar;
begin
  GetHostName(@s, 128);
  p := GetHostByName(@s);
  Memo1.Lines.Add(p^.h_Name);
  p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
  Memo1.Lines.Add(p2);
end;

end.


2 - Verificando o tipo de Drive

O código abaixo implementa uma função para testar qual o tipo de drive da unidade especificada.

Para isto, é necessário utilizar uma função de API do windows chamada GetTypeDrive.

Esta função retorna valores default que indicam o tipo de drive selecionado.(Drive_Removable,Drive_Fixed,Drive_Remote,Drive_CdRom,Drive_RamDisk)

Código Completo:

Function Tipo_Drive(Drive:Char):String;
Const
    Drive_Removable = 2;
    Drive_Fixed = 3;
    Drive_Remote = 4;
    Drive_CdRom = 5;
    Drive_RamDisk = 6;
var
    Tipo: byte;
begin
    Tipo := GetDriveType(PChar(Drive + ':\'));
  Case Tipo of
      0: Result := 'Indeterminado';
      1: Result := 'Inexistente ';
      2: Result := 'Removível';
      3: Result := 'Fixo';
      4: Result := 'Rede';
      5: Result := 'CD-ROM';
      6: Result := 'RAM Disk';
  else Result := ' Erro';
  End;
end;

3 - Verificando se a impressora está ativa
Na sua unit, faça a chamada abaixo:

While not PrinterOnline() do
begin
  MsgBox('Verifique a Impressora!','ATENÇÃO');
end;

Function PrinterOnLine : Boolean;
Const
  PrnStInt : Byte = $17;
  StRq : Byte = $02;
  PrnNum : Word = 0; { 0 para LPT1, 1 para LPT2, etc. }
Var
  nResult : byte;
Begin (* PrinterOnLine*)
  Asm
  mov ah,StRq;
  mov dx,PrnNum;
  Int $17;
  mov nResult,ah;
end;
  PrinterOnLine := (nResult and $80) = $80;
End;

4 - Verificando se há uma cópia em execução

var
  Hwnd: Thandle;
begin
  Hwnd := FindWindow ('TForm1', 'One Copy');
  if Hwnd = 0 then begin
      Application.Initialize;
      Application.CreateForm(TForm, Form1)
      Application.Run;
      end
  else
  begin
  MessageDlg ('Este programa já esta aberto' [mbok], 0);
  SetForegroundWindow (Hwnd);
end;

5 - Verificando se já estou conectado na Internet
Use o componente TCP para fazer isso.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if TCP1.LocalIp = '0.0.0.0' then
  ShowMessage('Você não está conectado!');
end;