Jump to content
Fórum Script Brasil

s3c

Membros
  • Content Count

    821
  • Joined

  • Last visited

Community Reputation

0 Neutro

About s3c

  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. É, 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. 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. 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. 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. 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. Olá Paulo, após o CreateFile coloque: ShowMessage(IntToStr(hDevice)); E poste o número que aparece.
×
×
  • Create New...