Ir para conteúdo
Fórum Script Brasil

s3c

Membros
  • Total de itens

    817
  • Registro em

  • Última visita

Sobre s3c

s3c's Achievements

0

Reputação

  1. Colegas, a função SHBrowseForFolder permite selecionar somente pastas ou pastas e arquivos. Churc, como seria a seleção de pastas e arquivos pelo TOpenDialog ? Isso pouparia código.
  2. Existe a função SHBrowseForFolder da api shell32.dll
  3. Como estão as propriedades: BorderIcons e BorderStyle ?
  4. Acho que esse While tem um pequeno furo. Se você tiver dois níveis 3 seguidos, o segundo não será excluído; sem contar que se você tiver níveis 4 em diante, sua variável i estará totalmente incompatível com o tvp.Items.Count. Acho que seria melhor você excluir através de um for na ordem inversa.
  5. s3c

    Números Primos

    Não seria: Trunc(SQRT(N)) + 1; ?
  6. s3c

    Abrir A Bandeja Do Dvd

    É, se ele abre mas não fecha, também pode ser algum outro código IOCTL para DVD.
  7. Você pode utilizar uma query para acessar esse nome na tabela, ou dar o Post dentro de um try/except. Table.Eof = final do cursor ou final da tabela ou um Table.Next após o último registro lido.
  8. s3c

    Record / Socket

    Acho que tanto faz, no meu caso utilizo SendBuf, colocando os dados num buffer linear e contínuo de memória. No recebimento você não possui o ReceiveStream, logo terá que receber pelo ReceiveBuf e esta função lhe retorna quantos bytes foram lidos. portanto é sempre bom fazer um loop de leitura até que todo o buffer seja lido. Uma dica é você enviar na frente o tamanho do buffer que virá a seguir num campo Integer(4 Bytes). Quando lê, você executa um ReceiveBuf com 4 e carrega o campo Inteiro. Depois você entra no loop de leitura comparando a soma lida com esse campo.
  9. s3c

    Record / Socket

    O SizeOf(MyRecord) retorna 8 bytes não importando o que tiver na String. Na verdade você está movendo o ponteiro da string(4 bytes) + o campo Integer(4 bytes). O SizeOf(MyStream) retorna 4 bytes por ser um ponteiro. O SendBuf de MyStream deveria ser MyStream.Memory^ porque não é o objeto que você vai mandar e sim o conteúdo armazenado na propriedade Memory dele.
  10. s3c

    Abrir A Bandeja Do Dvd

    Pode ser que ele não esteja liberando o Handle alocado; se não for isso, realmente não sei o que possa ser. Tente assim: Abrir: const IOCTL_Storage_Eject_Media = $002D4808; var hDevice:THandle; dRet:DWord; begin HDevice := CreateFile(PChar('\\.\G:'), Generic_Read, File_Share_Read, nil, Open_Existing, 0, 0); DeviceIoControl(hDevice, IOCTL_Storage_Eject_Media, nil, 0, nil, 0, dRet, nil); CloseHandle(hDevice); end; Fechar:const IOCTL_Storage_Load_Media = $002D480C; var hDevice:THandle; dRet:DWord; begin HDevice := CreateFile(PChar('\\.\G:'), Generic_Read, File_Share_Read, nil, Open_Existing, 0, 0); DeviceIoControl(hDevice, IOCTL_Storage_Load_Media, nil, 0, nil, 0, dRet, nil); CloseHandle(hDevice); end;
  11. s3c

    Abrir A Bandeja Do Dvd

    Paulo, retire Generic_Write, deixe somente Generic_Read; após CreateFile coloque: ShowMessage(SysErrorMessage(GetLastError));Com a bandeja aberta, chame o programa e execute somente o botão para fechar, veja qual a mensagem e clique em Ok.
  12. s3c

    Abrir A Bandeja Do Dvd

    Você consegue abrir pelo Shell.Application ou pelo DeviceIoControl ?
  13. Não tenho muita experiência com ADO, pois só trabalhei uns 3 meses, mas pelo que pude notar essa tecnologia utiliza OLE Variant e tem que ficar sempre convertendo um Variant para seu tipo de dado original, caindo assim sua performance(motivo da minha desistência pelo ADO). Nele você possui Parameters.ParamValues que retorna um Variant, e Parameters.ParamByName que retorna um TParameter que possui a propriedade Value(Variant). Ambos os casos retornam Variant e a conversão deve ser feita.
  14. s3c

    Abrir A Bandeja Do Dvd

    Olá,s3c, O número que aparece é o 4294967295 Isto indica um Handle inválido e ao que parece CreateFile não está entendendo sua unidade g:, logo DeviceIoControl não funcionará nem para abrir, nem para fechar; assim como Shell.Application não entende ParseName('g:\').Outra sugestão seria retornar a letra do Drive(se é que existe neste caso) utilizando WMI.
  15. s3c

    Abrir A Bandeja Do Dvd

    Olá Paulo, após o CreateFile coloque: ShowMessage(IntToStr(hDevice)); E poste o número que aparece.
×
×
  • Criar Novo...