ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4351  
Старый 13.09.2009, 14:01
stanger
Новичок
Регистрация: 12.09.2009
Сообщений: 2
Провел на форуме:
1307

Репутация: 0
Exclamation

Народ! Привет, есть проблемка, горит очень =) Возможно ли на обжект паскале сделать следующее: реализовать интерфейс с помощью классов, но так, чтобы класс был сделегирован (т.е. в теле интерфейса сделать ссылку на него) и самое главно, что, чтобы этот класс не объйявлять! Я вот не могу разобраться! Помогите! Вопщем в кратце, написать интерфейс методом делегирования без объявления класса.
 
Ответить с цитированием

  #4352  
Старый 13.09.2009, 16:41
iGlass
Познающий
Регистрация: 14.05.2009
Сообщений: 92
Провел на форуме:
299447

Репутация: 5
Exclamation

Через выше описаный метод не канает...


Код проги
Код HTML:
 var
 S: TStringList;
 P,I: integer;
 user,balans,credit: string;
begin

 S:=TStringList.Create; //Создаём Строковый листок
 Memo1.Text:=idHttp1.Get('http://stat.elcity.ru/showstat.php?'+'uid='+login.Text+'&pwd='+password.Text);  // Получаем страницу
 S.Text:=Memo1.Text;
 P:=S.IndexOf('<!--Вставка блока PHP -->');
 //
 if not (P=-1)
 then
  begin
   for i:=0 to 3 do
    begin
     inc(P);
     if Pos('Пользователь',S.Strings[p])>0
     then user:=S.Strings[p];
     if Pos('Текущий кредит',S.Strings[p])>0
     then credit:=S.Strings[p];
     if Pos('Баланс',S.Strings[p])>0
     then balans:=S.Strings[p];

    end;

  end;
 Delete(user,1,pos('<',user));
 Delete(user,1,pos('td',user));
 Delete(user,1,pos('>',user));
 Delete(user,1,pos('b',user));
 Delete(user,pos('/',user),20);
 Delete(user,1,pos('<',user));
 Delete(user,1,pos('td',user));
 Delete(user,1,pos('>',user));
 Delete(user,1,pos('b',user))
 Delete(user,pos('/',user),20);
 Label1.Caption:='Пользователь: '+user+#10#13+'Текущий кредит: '+credit+#10#13;
Не показывает текущий кредит и баланс тоже... Но имя пользователя приходит...

В чём проблема, помогайте плиз! От меня + В репу

Код странички

Код:
<!--Вставка блока PHP -->
<h2><font color=darkred size=+1 face=Arial>Общая информация</font></h2>
 <table width=400 cellspacing=0 cellpadding=3 border=1>
 <tr><td>Пользователь</td><td align=center><b>iglass</b></td></tr>

 <tr><td>Ф.И.О.</td><td align=center><b>Иван</b></td></tr>
 <tr><td>Лицевой счет</td><td align=center><b>10854</b></td></tr>
 <tr><td>Тариф</td><td align=center><b>Безлимитный 560</b></td></tr>
 <tr><td>Абонентская плата</td><td align=center><b>900 руб/месяц</b></td></tr>
 <tr><td>Текущий кредит</td><td align=center><b>0 руб.</b></td></tr><tr><td>Сумма на счету</td><td align=center><b><font color=green>524.52</font> руб.</b></td></tr>
 
Ответить с цитированием

  #4353  
Старый 14.09.2009, 06:29
Seregakz
Познающий
Регистрация: 13.06.2009
Сообщений: 32
Провел на форуме:
42683

Репутация: 2
По умолчанию

Народ подскажите как на дельфи узнать серийник харда (не серийник тома) чтобы на любой ОС пахало! спасиб
 
Ответить с цитированием

  #4354  
Старый 15.09.2009, 00:57
Mykola-bas
Новичок
Регистрация: 24.04.2008
Сообщений: 13
Провел на форуме:
194929

Репутация: 0
Отправить сообщение для Mykola-bas с помощью ICQ
По умолчанию

спс за ответ. с вводом букв розобрался, еще вопрос:
есть функцыя SetFocus мне надо зделать чтобы курсор переводился на следующий едит когда в него ввели допустим 2 цыфры..
 
Ответить с цитированием

  #4355  
Старый 15.09.2009, 07:18
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

иди русский учи
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #4356  
Старый 15.09.2009, 10:16
Mykola-bas
Новичок
Регистрация: 24.04.2008
Сообщений: 13
Провел на форуме:
194929

Репутация: 0
Отправить сообщение для Mykola-bas с помощью ICQ
По умолчанию

неучил неучу и учить небуду, если нет чего сказать по теме то лутше молчи.
 
Ответить с цитированием

  #4357  
Старый 15.09.2009, 10:26
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 Mykola-bas
ну в томже onkeypress обработчике делай чтото типа этого
if length(edit1.Text) = 1 then Edit2.SetFocus;
 
Ответить с цитированием

  #4358  
Старый 15.09.2009, 10:36
Seregakz
Познающий
Регистрация: 13.06.2009
Сообщений: 32
Провел на форуме:
42683

Репутация: 2
По умолчанию

slesh вижу ты всезнающий =) не подскажеш как получить инфу о харде? (типа как Hardware_IDExtractor.dll)
 
Ответить с цитированием

  #4359  
Старый 15.09.2009, 11:02
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

это довольно геморно и под разные накопители по разному получается
можно читать SMART. МОжно через WMI. В инете вроде были исходники и того и другова.

Вот пример для IDE дисков под XP/2003
кода там очень мало. в осномном только описание структур.
У меня вывел - WD-WCAH81202167
Код:
function GetIdeDiskSerialNumber(disk:byte): string;
type
  TSrbIoControl = packed record
    HeaderLength: ULONG;
    Signature: array[0..7] of Char;
    Timeout: ULONG;
    ControlCode: ULONG;
    ReturnCode: ULONG;
    Length: ULONG;
  end;
  SRB_IO_CONTROL = TSrbIoControl;
  PSrbIoControl = ^TSrbIoControl;

  TIDERegs = packed record
    bFeaturesReg: Byte; // Used for specifying SMART "commands".
    bSectorCountReg: Byte; // IDE sector count register
    bSectorNumberReg: Byte; // IDE sector number register
    bCylLowReg: Byte; // IDE low order cylinder value
    bCylHighReg: Byte; // IDE high order cylinder value
    bDriveHeadReg: Byte; // IDE drive/head register
    bCommandReg: Byte; // Actual IDE command.
    bReserved: Byte; // reserved for future use. Must be zero.
  end;
  IDEREGS = TIDERegs;
  PIDERegs = ^TIDERegs;

  TSendCmdInParams = packed record
    cBufferSize: DWORD; // Buffer size in bytes
    irDriveRegs: TIDERegs; // Structure with drive register values.
    bDriveNumber: Byte; // Physical drive number to send command to (0,1,2,3).
    bReserved: array[0..2] of Byte; // Reserved for future expansion.
    dwReserved: array[0..3] of DWORD; // For future use.
    bBuffer: array[0..0] of Byte; // Input buffer.
  end;
  SENDCMDINPARAMS = TSendCmdInParams;
  PSendCmdInParams = ^TSendCmdInParams;

  TIdSector = packed record
    wGenConfig: Word;
    wNumCyls: Word;
    wReserved: Word;
    wNumHeads: Word;
    wBytesPerTrack: Word;
    wBytesPerSector: Word;
    wSectorsPerTrack: Word;
    wVendorUnique: array[0..2] of Word;
    sSerialNumber: array[0..19] of Char;
    wBufferType: Word;
    wBufferSize: Word;
    wECCSize: Word;
    sFirmwareRev: array[0..7] of Char;
    sModelNumber: array[0..39] of Char;
    wMoreVendorUnique: Word;
    wDoubleWordIO: Word;
    wCapabilities: Word;
    wReserved1: Word;
    wPIOTiming: Word;
    wDMATiming: Word;
    wBS: Word;
    wNumCurrentCyls: Word;
    wNumCurrentHeads: Word;
    wNumCurrentSectorsPerTrack: Word;
    ulCurrentSectorCapacity: ULONG;
    wMultSectorStuff: Word;
    ulTotalAddressableSectors: ULONG;
    wSingleWordDMA: Word;
    wMultiWordDMA: Word;
    bReserved: array[0..127] of Byte;
  end;
  PIdSector = ^TIdSector;

const
  IDE_ID_FUNCTION = $EC;
  IDENTIFY_BUFFER_SIZE = 512;
  DFP_RECEIVE_DRIVE_DATA = $0007C088;
  IOCTL_SCSI_MINIPORT = $0004D008;
  IOCTL_SCSI_MINIPORT_IDENTIFY = $001B0501;
  DataSize = sizeof(TSendCmdInParams) - 1 + IDENTIFY_BUFFER_SIZE;
  BufferSize = SizeOf(SRB_IO_CONTROL) + DataSize;
  W9xBufferSize = IDENTIFY_BUFFER_SIZE + 16;
var
  hDevice: THandle;
  cbBytesReturned: DWORD;
  pInData: PSendCmdInParams;
  pOutData: Pointer; // PSendCmdInParams;
  Buffer: array[0..BufferSize - 1] of Byte;
  srbControl: TSrbIoControl absolute Buffer;

  procedure ChangeByteOrder(var Data; Size: Integer);
  var
    ptr: PChar;
    i: Integer;
    c: Char;
  begin
    ptr := @Data;
    for i := 0 to (Size shr 1) - 1 do
    begin
      c := ptr^;
      ptr^ := (ptr + 1)^;
      (ptr + 1)^ := c;
      Inc(ptr, 2);
    end;
  end;

begin
  Result := '';
  FillChar(Buffer, BufferSize, #0);
  hDevice := CreateFile(pchar('\\.\Scsi'+inttostr(disk)+':'), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
  if hDevice = INVALID_HANDLE_VALUE then Exit;
  try
    srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);
    System.Move('SCSIDISK', srbControl.Signature, 8);
    srbControl.Timeout := 2;
    srbControl.Length := DataSize;
    srbControl.ControlCode := IOCTL_SCSI_MINIPORT_IDENTIFY;
    pInData := PSendCmdInParams(PChar(@Buffer) + SizeOf(SRB_IO_CONTROL));
    pOutData := pInData;
    with pInData^ do
    begin
      cBufferSize := IDENTIFY_BUFFER_SIZE;
      bDriveNumber := 0;
      with irDriveRegs do
      begin
        bFeaturesReg := 0;
        bSectorCountReg := 1;
        bSectorNumberReg := 1;
        bCylLowReg := 0;
        bCylHighReg := 0;
        bDriveHeadReg := $A0;
        bCommandReg := IDE_ID_FUNCTION;
      end;
    end;

    if not DeviceIoControl(hDevice, IOCTL_SCSI_MINIPORT, @Buffer, BufferSize, @Buffer, BufferSize, cbBytesReturned, nil) then Exit;
  finally
    CloseHandle(hDevice);
  end;

  with PIdSector(PChar(pOutData) + 16)^ do
  begin
    ChangeByteOrder(sSerialNumber, SizeOf(sSerialNumber));
    SetString(Result, sSerialNumber, SizeOf(sSerialNumber));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := GetIdeDiskSerialNumber(0);
  if s <> '' then ShowMessage(s);
end;
 
Ответить с цитированием

  #4360  
Старый 15.09.2009, 11:06
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

но вообще советую полистать вот эти сайты:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1233313403&n=5
http://msdn.microsoft.com/en-us/library/aa394132(VS.85).aspx
http://www.magsys.co.uk/delphi/magwmi.asp

Да и что тебе не дает юзать HardwareIDExtractor.dll

Но лучше копать в сторону WMI потому что это более надежнее
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/WPAN/WLAN 2567 19.04.2026 23:21
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[jQuery] - Задай вопрос, получи ответ Isis PHP, PERL, MySQL, JavaScript 62 25.12.2009 03:25
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ