[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    это не совсем то,когда у меня на ноуте была виста,я тоже не мог паскаль развернуть на весь экран,и все только пожимали плечами,в ХР все отлично:)
    наверное более новые версии OS уже не поддерживают такие программные продукты с их полной функциональностью))
     
  2. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    TEdit(FindComponent('Edit'+IntToStr(i))).Text:=mes;
     
    1 person likes this.
  3. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    DimkO, странно то как у тебя вообще TP на Win7 запустился Оо. Я только из под VM могу работать.......
     
  4. DimkO

    DimkO Banned

    Joined:
    16 Nov 2008
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    а я и не говорил что у меня сейчас win7!я висту перебил на хр,считаю что программистам намного важнее увеличить производительность своей системы,а не улучшить "визуальные эффекты" :p
     
  5. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    DimkO, ой, я твой пост случайно спутал с постом Nizhegorodets. Ну виста это вообще отдельная тема :) А вот Вин7 приятно удивила, все работает быстро, без нареканий.

    Nizhegorodets. Расскажи пж как это ты TP на Win7 запустил? DosBox или VM?
     
  6. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Есть стринг переменная вида: x*x-x-5

    Как вырезать третий X и поместить в другую переменную (вида стринг)? (т.е. который между минусами) (ах да, знаки в "уравнении" могут быть любыми!)
     
  7. -PsychonauT-

    -PsychonauT- Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    67
    Reputations:
    -1
    есть компоненты: edit1, label1, button1
    как расписать так, что бы вводимый текстовой текст в edit1 (например 1) был равен 3,4
    (2 = 3,4*2)
     
  8. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    Edit1.ReadOnly := true;
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
    var
      number : Real;
    begin
      number := 3.4 * StrToFloat (Key);
      Edit1.Text:=FloatToStr(number);
    end;
    
     
  9. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Вместо X будет введенно число? Если это квадратного уравнение, то b = только 1 или могут быть другие числа? Напимер x*x-5*x-5 ? Уточни условие
     
  10. RAINUR2

    RAINUR2 New Member

    Joined:
    27 Aug 2009
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Как можно узнать место положение пера?Ну вот стоит у меня перо)))))))))))и мне нужно узнать его координаты, есть ли функция какая нить?(Delfi)
     
  11. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    function GetCursorPos(var Point: TPoint);

    Пример:
    Code:
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
      var
      CursorPosition:TPoint;
    begin
    getcursorpos(CursorPosition);
    edit1.Text := 'X = ' + inttostr(CursorPosition.X) + ' Y = ' + inttostr(CursorPosition.Y);
    end;
    
     
    1 person likes this.
  12. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Совершенно верно (да это квад. урав.)
     
  13. -PsychonauT-

    -PsychonauT- Member

    Joined:
    23 Aug 2009
    Messages:
    0
    Likes Received:
    67
    Reputations:
    -1
    хочу создать процедуру на радиогруппу

    procedure TForm1.RadioGroup1Click(Sender: TObject);
    begin
    RadioGroup1.ItemIndex:=0;
    label3.Visible:=true;
    label2.Visible:=true;
    edit1.Visible:=true;
    edit2.Visible:=true;
    RadioGroup1.ItemIndex:=1;
    label3.Visible:=false;
    label2.Visible:=false;
    label4.Visible:=true;
    label5.Visible:=true;​

    почему она начинает тупить?
    моя цель - это создать радиогруппу, при которой ткнув на item0 раскрываются некоторые label's и edit's, а некоторые скрываются
    тоже самое при клацанье на item1
     
  14. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    label3.Visible:=true;
    label2.Visible:=true;
    edit1.Visible:=true;
    edit2.Visible:=true;

    аааа тру код!

    var b: Boolean;
    ..
    b:=RadioGroup1.Checked;
    label3.Visible:=b;
    label2.Visible:=b;
    edit1.Visible:=b;
    edit2.Visible:=b;

    ...
     
  15. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    wolmer, в асю пиши, подскажу если что. 2584444пять
     
  16. transserg

    transserg Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    147
    Likes Received:
    25
    Reputations:
    2
    Nightmarе
    получает серийник флешки =) (физический а не тома)
    писал на основе примера
    Code:
    unit FlashSerial;
    interface
    uses
      Windows,StringTools;
    
    
    {$ALIGN 8}
    
    const
      DeviceMask = '%c:';
      VolumeMask = '\\.\' + DeviceMask;
    
      setupapi = 'SetupApi.dll';
      cfgmgr = 'cfgmgr32.dll';  
    
      // Константы и типы из winioctl.h
    
    const
      FILE_DEVICE_CONTROLLER = $00000004;
      FILE_DEVICE_FILE_SYSTEM = $00000009;
      FILE_DEVICE_MASS_STORAGE = $0000002D;
    
      METHOD_BUFFERED = $00000000;
      FILE_ANY_ACCESS = $00000000;
      FILE_READ_ACCESS = $00000001;
      FILE_WRITE_ACCESS = $00000002;
    
      IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE;
      IOCTL_SCSI_BASE = FILE_DEVICE_CONTROLLER;
    
      FSCTL_LOCK_VOLUME = (FILE_DEVICE_FILE_SYSTEM shl 16) or
        (FILE_ANY_ACCESS shl 14) or ($6 shl 2) or METHOD_BUFFERED;
    
      FSCTL_DISMOUNT_VOLUME = (FILE_DEVICE_FILE_SYSTEM shl 16) or
        (FILE_ANY_ACCESS shl 14) or ($8 shl 2) or METHOD_BUFFERED;
    
      IOCTL_STORAGE_MEDIA_REMOVAL = (IOCTL_STORAGE_BASE shl 16) or
        (FILE_READ_ACCESS shl 14) or ($0201 shl 2) or METHOD_BUFFERED;
    
      IOCTL_STORAGE_EJECT_MEDIA = (IOCTL_STORAGE_BASE shl 16) or
        (FILE_READ_ACCESS shl 14) or ($0202 shl 2) or METHOD_BUFFERED; 
    
      IOCTL_STORAGE_GET_DEVICE_NUMBER = (IOCTL_STORAGE_BASE shl 16) or
        (FILE_ANY_ACCESS shl 14) or ($0420 shl 2) or METHOD_BUFFERED;
    
      IOCTL_SCSI_PASS_THROUGH = (IOCTL_SCSI_BASE shl 16) or
        ((FILE_WRITE_ACCESS or FILE_READ_ACCESS) shl 14) or
        ($0401 shl 2) or METHOD_BUFFERED;
    
      GUID_DEVINTERFACE_DISK: TGUID = (
        D1:$53f56307; D2:$b6bf; D3:$11d0; D4:($94, $f2, $00, $a0, $c9, $1e, $fb, $8b));
    
    type
      DEVICE_TYPE = DWORD;
    
      PStorageDeviceNumber = ^TStorageDeviceNumber;
      TStorageDeviceNumber = packed record
        DeviceType: DEVICE_TYPE;
        DeviceNumber: DWORD;
        PartitionNumber: DWORD;
      end;
    
      // Константы и типы из setupapi.h
    const
      ANYSIZE_ARRAY = 1024;
    
      DIGCF_PRESENT         = $00000002;
      DIGCF_DEVICEINTERFACE = $00000010;
    
    type
      HDEVINFO = THandle;
    
      PSPDevInfoData = ^TSPDevInfoData;
      SP_DEVINFO_DATA = packed record
        cbSize: DWORD;
        ClassGuid: TGUID;
        DevInst: DWORD; // DEVINST handle
        Reserved: ULONG_PTR;
      end;
      TSPDevInfoData = SP_DEVINFO_DATA;
    
      PSPDeviceInterfaceData = ^TSPDeviceInterfaceData;
      SP_DEVICE_INTERFACE_DATA = packed record
        cbSize: DWORD;
        InterfaceClassGuid: TGUID;
        Flags: DWORD;
        Reserved: ULONG_PTR;
      end;
      TSPDeviceInterfaceData = SP_DEVICE_INTERFACE_DATA;
    
      PSPDeviceInterfaceDetailDataA = ^TSPDeviceInterfaceDetailDataA;
      PSPDeviceInterfaceDetailData = PSPDeviceInterfaceDetailDataA;
      SP_DEVICE_INTERFACE_DETAIL_DATA_A = packed record
        cbSize: DWORD;
        DevicePath: array [0..ANYSIZE_ARRAY - 1] of AnsiChar;
      end;
      TSPDeviceInterfaceDetailDataA = SP_DEVICE_INTERFACE_DETAIL_DATA_A;
      TSPDeviceInterfaceDetailData = TSPDeviceInterfaceDetailDataA;
    
      function SetupDiGetClassDevsA(ClassGuid: PGUID; const Enumerator: PAnsiChar;
        hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall; external setupapi;
    
      function SetupDiDestroyDeviceInfoList(
        DeviceInfoSet: HDEVINFO): LongBool; stdcall; external setupapi;
    
      function SetupDiEnumDeviceInterfaces(DeviceInfoSet: HDEVINFO;
        DeviceInfoData: PSPDevInfoData; const InterfaceClassGuid: TGUID;
        MemberIndex: DWORD; var DeviceInterfaceData: TSPDeviceInterfaceData):
        LongBool; stdcall; external setupapi;
    
      function SetupDiGetDeviceInterfaceDetailA(DeviceInfoSet: HDEVINFO;
        DeviceInterfaceData: PSPDeviceInterfaceData;
        DeviceInterfaceDetailData: PSPDeviceInterfaceDetailDataA;
        DeviceInterfaceDetailDataSize: DWORD; var RequiredSize: DWORD;
        Device: PSPDevInfoData): LongBool; stdcall; external setupapi;
    
      // Константы и типы из cfgmgr32.h
    
    const
      CR_SUCCESS = 0;
    
      PNP_VetoTypeUnknown          = 0;
      PNP_VetoLegacyDevice         = 1;
      PNP_VetoPendingClose         = 2;
      PNP_VetoWindowsApp           = 3;
      PNP_VetoWindowsService       = 4;
      PNP_VetoOutstandingOpen      = 5;
      PNP_VetoDevice               = 6;
      PNP_VetoDriver               = 7;
      PNP_VetoIllegalDeviceRequest = 8;
      PNP_VetoInsufficientPower    = 9;
      PNP_VetoNonDisableable       = 10;
      PNP_VetoLegacyDriver         = 11;  
      PNP_VetoInsufficientRights   = 12;
    type
      DEVINST = DWORD;
      CONFIGRET = DWORD;
    
      PPNP_VETO_TYPE = ^PNP_VETO_TYPE;
      PNP_VETO_TYPE = DWORD;
    
      function CM_Get_Parent(var dnDevInstParent: DEVINST;
        dnDevInst: DEVINST; ulFlags: ULONG): CONFIGRET; stdcall;
        external cfgmgr;
    
      function CM_Request_Device_EjectA(dnDevInst: DEVINST;
        pVetoType: PPNP_VETO_TYPE; pszVetoName: PWideChar;
        ulNameLength: ULONG; ulFlags: ULONG): CONFIGRET; stdcall;
        external setupapi;
    {  CMAPI CONFIGRET WINAPI
        CM_Get_Device_ID_Size(
          OUT PULONG  pulLen,
          IN DEVINST  dnDevInst,
          IN ULONG  ulFlags
        );}
      function CM_Get_Device_ID_Size(pulLen:PULONG;dnDevInst: DEVINST;ulFlags: ULONG): CONFIGRET; stdcall;
        external setupapi;
    {CMAPI CONFIGRET WINAPI
      CM_Get_Device_ID(
        IN DEVINST  dnDevInst,
        OUT PTCHAR  Buffer,
        IN ULONG  BufferLen,
        IN ULONG  ulFlags
        );
        }
      function CM_Get_Device_IDA(dnDevInst: DEVINST;Buffer:PChar;BufferLen:ULONG;ulFlags: ULONG): CONFIGRET; stdcall;
        external setupapi;    
      // Константы и типы из ntddscsi.h
    
    const
      SCSI_IOCTL_DATA_IN = 1;
      SCSIOP_MECHANISM_STATUS = $BD;
    
    type
      USHORT = Word;
    
      PSCSI_PASS_THROUGH_DIRECT = ^SCSI_PASS_THROUGH_DIRECT;
      _SCSI_PASS_THROUGH_DIRECT = {packed} record
        Length: USHORT;
        ScsiStatus: UCHAR;
        PathId: UCHAR;
        TargetId: UCHAR;
        Lun: UCHAR;
        CdbLength: UCHAR;
        SenseInfoLength: UCHAR;
        DataIn: UCHAR;
        DataTransferLength: ULONG;
        TimeOutValue: ULONG;
        DataBuffer: ULONG;
        SenseInfoOffset: ULONG;
        Cdb: array [0..15] of UCHAR;
      end;
      SCSI_PASS_THROUGH_DIRECT = _SCSI_PASS_THROUGH_DIRECT;
    
      TSCSIPassThroughDirectBuffer = record
        Header: SCSI_PASS_THROUGH_DIRECT;
        SenseBuffer: array [0..31] of UCHAR;
        DataBuffer: array [0..191] of UCHAR;
      end;
    
    function GetFlashSerial(const Value: Char): PChar;
    function GetFlashS(const Dr:Char):PChar;
    implementation
    
    function GetPath(Path:PChar):PChar;
      var
        I: Integer;
        temp:PChar;
      begin
        GetMem(temp,MAX_PATH);
        for I := lstrlen(path) downto 0 do
          if Path[i]<>'\' then
              temp:=PChar(path[i]+temp)
          else
            Break;
        Result:=temp;
      end;
    
    function GetFlashS(const Dr:Char):PChar;
      var
        temp:PChar;
      begin
        temp:=GetFlashSerial(Dr);
        Result:=GetPath(temp);
      end;
    
    function GetFlashSerial(const Value: Char): PChar;
      var
        hFile, hDevInfo, hDrive, hDevInstance: THandle;
        sdn: TStorageDeviceNumber;
        dwDeviceNumber, dwBytesReturned, dwSize: DWORD;
        FlashGuid: TGUID;
        I: Integer;
        DeviceInfoData: TSPDevInfoData;
        DeviceInterfaceData: TSPDeviceInterfaceData;
        DeviceInterfaceDetailData: TSPDeviceInterfaceDetailData;
        Size:DWORD;
        Buf:array[0..MAX_PATH] of char;
        BufD:PChar;
      begin
        Result := '';
        hDevInstance := INVALID_HANDLE_VALUE;
    
        // Открываем том
        GetMem(BufD,MAX_PATH);
        wsprintf(BufD,VolumeMask,Value);
        hFile := CreateFile(BufD, 0,FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
        if hFile = INVALID_HANDLE_VALUE then
          begin
            Exit;
          end;
        try
          // Получаем номер устройства в системе
          if not DeviceIoControl(hFile,IOCTL_STORAGE_GET_DEVICE_NUMBER, nil, 0, @sdn,SizeOf(TStorageDeviceNumber), dwBytesReturned, nil) then
            begin
              Exit;
            end;
    
          dwDeviceNumber := sdn.DeviceNumber;
          FlashGuid := GUID_DEVINTERFACE_DISK;
          // Подготавливаем список устройств в системе, для поиска хэндла устройства
          hDevInfo := SetupDiGetClassDevsA(@FlashGuid, nil, 0,DIGCF_PRESENT or DIGCF_DEVICEINTERFACE);
          if hDevInfo = INVALID_HANDLE_VALUE then
            begin
              Exit;
            end;
          try
    
            I := 0;
            // Крутим цикл по всем устройствам
            DeviceInterfaceData.cbSize := SizeOf(TSPDeviceInterfaceData);
            while SetupDiEnumDeviceInterfaces(hDevInfo, nil, FlashGuid, I, DeviceInterfaceData) do
              begin
    
                Inc(I);
    
                // Узнаем необходимый размер буффера для получения пути к устройству
                SetupDiGetDeviceInterfaceDetailA(hDevInfo, @DeviceInterfaceData,nil, 0, dwSize, nil);
                if dwSize = 0 then
                  begin
                    Exit;
                  end;
    
                DeviceInfoData.cbSize :=  SizeOf(TSPDevInfoData);
                // Узкий момент, размер структуры должен быть обьявлен как пятерка.
                // Почему? Это не ко мне, а к тем кто это придумал -
                // в противном случае вызов SetupDiGetDeviceInterfaceDetailA
                // будет не успешен
                DeviceInterfaceDetailData.cbSize := 5;
                // Получаем путь к устройству
                if not SetupDiGetDeviceInterfaceDetailA(hDevInfo, @DeviceInterfaceData,@DeviceInterfaceDetailData, dwSize, dwSize, @DeviceInfoData) then
                  begin
                    Exit;
                  end;
                // Открываем устройство
                hDrive := CreateFile(PChar(@DeviceInterfaceDetailData.DevicePath[0]),0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
                if hFile = INVALID_HANDLE_VALUE then
                  begin
                    Exit;
                  end;
                try
                  // Получаем номер устройства в системе
                  if not DeviceIoControl(hDrive,IOCTL_STORAGE_GET_DEVICE_NUMBER, nil, 0, @sdn,SizeOf(TStorageDeviceNumber), dwBytesReturned, nil) then
                    begin
                      Exit;
                    end;
                  // Если данное устройство - наше, запоминаем хэндл
                  if sdn.DeviceNumber = dwDeviceNumber then
                    begin
                      hDevInstance := DeviceInfoData.DevInst;
                      Break;
                    end;
                finally
                  CloseHandle(hDrive);
                end;
              end;
          finally
              SetupDiDestroyDeviceInfoList(hDevInfo);
          end;
        finally
          CloseHandle(hFile);
        end;
        // Смотрим - нашелся ли хэндл устройства
        if hDevInstance <> INVALID_HANDLE_VALUE then
          begin
            // Получаем хэндл родителя
            CM_Get_Device_ID_Size(@size,hDevInstance,0);
            if CM_Get_Device_IDA(hDevInstance,buf,size*2,0)=0 then
              Result:=Buf;
          end;
      end;
    
    end.
    
    
     
    1 person likes this.
  17. warkk

    warkk Member

    Joined:
    20 Feb 2009
    Messages:
    139
    Likes Received:
    23
    Reputations:
    0
    Может ли функция возвращать массив? Если может то как?
    function mas( ... ):array of integer; не работает.
     
  18. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    1.Пример куска кода вк при изминения группы.


    <script type="text/javascript">
    onDomReady(function() {
    new Checkbox(ge('show_wall'), {
    width: 266,
    label: 'Стена включена',
    checked: 1
    });


    Нужно что-бы значение "checked: 1" стало "checked: 0"
    Нужно сделать замену значения именно в TWebBrowser!

    ----------------------
    2.Как загрузить фото В вк с помощью TWebBrowser (например по кнопке)...

    Заранее благодарен
     
    #5318 090808, 17 Feb 2010
    Last edited: 17 Feb 2010
    1 person likes this.
  19. RumShun

    RumShun Member

    Joined:
    27 Oct 2008
    Messages:
    283
    Likes Received:
    75
    Reputations:
    6
    warkk
    оформляй массив как тип
    type
    massiv=array of integer;
    потом функцию определяешь
    function mas( ... ):massiv;
     
  20. RAINUR2

    RAINUR2 New Member

    Joined:
    27 Aug 2009
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Так:)как на делфи вывести ошибку...Вроде бы showmessage...Пример нужен
     
Thread Status:
Not open for further replies.