Páginas

Pesquise o Assuntos Delphi Desejado

Habilitar e desabilitar USB

0 comentários


procedure bloquearUSB;
var
  reg : TRegistry;
begin
  reg := TRegistry.create;
  with reg do
  begin
     RootKey := HKEY_LOCAL_MACHINE;
     if OpenKey('\SYSTEM\CurrentControlSet\Services\UsbStor', false) then
     begin
        //quatro bloqueia
        reg.WriteInteger('Start', 4);
        //caminho do arquivo que o windows usa para montar a unidade usb
        reg.WriteString('ImagePath', '_system32\DRIVERS\USBSTOR.SYS');
     end;
     CloseKey;
  end;
end;

Procedure desbloquearUSB;
var
 reg : Tregistry;
begin
  reg := TRegistry.Create;
  with reg do
  begin
     RootKey := HKEY_LOCAL_MACHINE;
     if OpenKey('\SYSTEM\CurrentControlSet\Services\UsbStor', false) then
     begin
        //tres desbloqueia
        reg.WriteInteger('Start', 3);
        //caminho do arquivo que o windows usa para montar a unidade usb
        reg.WriteString('ImagePath', 'system32\DRIVERS\USBSTOR.SYS');
     end;

  end;

end;

682 - Zerar Campo AutoIncremento:

0 comentários


Quanto trabalhamos com tabelas Paradox e apagamos o seus registros, o contador do campo AutoIncremento não é zerado, criando muitas vezes um grande inconveniente. Para resolver esse problema, use a seguinte função:
function ResetAutoInc(FileName: TFileName; Base: Longint): Boolean;
begin
  with TFileStream.Create(FileName, fmOpenReadWrite) do
  Result := (Seek($49, soFromBeginning) = $49) and (Write(Base, 4) = 4);
end;
O parâmetro FileName é o nome da tabela, incluindo o caminho. E o parâmetro Base é o valor inicial para o contador do AutoIncremento.

500 - Visualizar aruqivos compactados CAB

0 comentários


procedure TFormPrincipal.BotaoAbrirClick (Sender: TObject);
var
K : Integer;
N : Integer;
Info: pInfoCabinet;
Nome: String;
Path: String;
begin
SetCurrentDir ('D:TempCab');
if OpenDialog.Execute then begin
N := 0;
Cabinet:= TCabinet.Create;
Cabinet.LoadFromFile (OpenDialog.FileName);
Lista.Items.BeginUpdate;
Lista.Items.Clear;
Lista.ViewStyle:= vsReport;
for K:= 0 to Cabinet.Lista.Count-1 do begin
Nome:= Cabinet.ExtrairNomePath (Cabinet.Lista.Strings[K], Path);
if Nome <> '' then
with Lista.Items.Add do begin
Inc (N);
Caption:= Nome;
Info := pInfoCabinet (Cabinet.Lista.Objects[K]);
if Info <> nil then
with Info^ do begin
SubItems.Add (IntToStr (Descompactado));
SubItems.Add (DateTimeToStr (Modificado));
SubItems.Add (Path);
end;
end;
end;
Lista.Items.EndUpdate;
Caption:= OpenDialog.FileName + ' - ' + IntToStr (N) + ' arquivo(s)';
Cabinet.Free;
end;
end;
  

436 - Virtual keys

0 comentários


vk_LButton = $01;
vk_RButton = $02;
vk_Cancel = $03;
vk_MButton = $04; { NOT contiguous with L & RBUTTON }
vk_Back = $08;
vk_Tab = $09;
vk_Clear = $0C;
vk_Return = $0D;
vk_Shift = $10;
vk_Control = $11;
vk_Menu = $12;
vk_Pause = $13;
vk_Capital = $14;
vk_Escape = $1B;
vk_Space = $20;
vk_Prior = $21;
vk_Next = $22;
vk_End = $23;
vk_Home = $24;
vk_Left = $25;
vk_Up = $26;
vk_Right = $27;
vk_Down = $28;
vk_Select = $29;
vk_Print = $2A;
vk_Execute = $2B;
vk_SnapShot = $2C;
vk_Copy = $2C {not used by keyboards }
vk_Insert = $2D;
vk_Delete = $2E;
vk_Help = $2F;
{vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' }
{ vk_0 thru vk_9 are the same as their ASCII equivalents: '0' thru '9' }
vk_NumPad0 = $60;
vk_NumPad1 = $61;
vk_NumPad2 = $62;
vk_NumPad3 = $63;
vk_NumPad4 = $64;
vk_NumPad5 = $65;
vk_NumPad6 = $66;
vk_NumPad7 = $67;
vk_NumPad8 = $68;
vk_NumPad9 = $69;
vk_Multiply = $6A;
vk_Add = $6B;
vk_Separator = $6C;
vk_Subtract = $6D;
vk_Decimal = $6E;
vk_Divide = $6F;
vk_F1 = $70;
vk_F2 = $71;
vk_F3 = $72;
vk_F4 = $73;
vk_F5 = $74;
vk_F6 = $75;
vk_F7 = $76;
vk_F8 = $77;
vk_F9 = $78;
vk_F10 = $79;
vk_F11 = $7A;
vk_F12 = $7B;
vk_F13 = $7C;
vk_F14 = $7D;
vk_F15 = $7E;
vk_F16 = $7F;
vk_F17 = $80;
vk_F18 = $81;
vk_F19 = $82;
vk_F20 = $83;
vk_F21 = $84;
vk_F22 = $85;
vk_F23 = $86;
vk_F24 = $87;
vk_NumLock = $90;
vk_Scroll = $91;
  

514 - Vetor Dinâmico

0 comentários


01)

var
  vetor_string_dinamico: array of string;
  i: integer;
begin
  setLength( vetor_string_dinamico, 10 );
  for i := 0 to high( vetor_string_dinamico) do begin
  vetor_string_dinamico[ i ] := IntToStr( i );
  end;

02)

var
  vetor_taluno: array of TAluno;
begin
  setLength( vetor_tAluno, 5 );
  vetor_tAluno[0] := TAluno.Create;
  vetor_taluno[0].Codigo := valor;

03)

 exemplo:
 var
  vetor_string_dinamico: array of string;
  i: integer;
 begin
  setLength( vetor_string_dinamico, 10 );
  for i := 0 to high( vetor_string_dinamico) do begin
  vetor_string_dinamico[ i ] := IntToStr( i );
  end;

04)



type
  vetor_dinamico = array of TAluno;
var
  vetor_aluno: vetor_dinamico; 

532 - Verificar se variavel está vazia

0 comentários


function Empty(inString:String): Boolean;
{Testa se a variavel está vazia ou não}
Var
  index : Byte;
Begin
  index := 1;
  Empty := True;
  while (index <= Length(inString))and (index <> 0) do
  begin
  if inString[index] = ' ' Then
  begin
 inc(index)
  end
  else
Begin
  Empty := False;
  index := 0
end;
  end;
end;

185 - Verificar se uma string é uma data válida

0 comentários


Escreva a função abaixo:
function tbStrIsDate(const S: string): boolean;
begin
  try
  StrToDate(S);
  Result := true;
  except
  Result := false;
  end;
end;
Para testar:
- Coloque um Edit no form;
- Coloque um Button;
- No evento OnClick do botão coloque o código abaixo:
if tbStrIsDate(Edit1.Text) then
  ShowMessage(Edit1.Text + ' é data válida.')
else
  ShowMessage(Edit1.Text + ' NÃO é data válida.');