Usina BRAdvPL Guia
Entrar
← Todos os tópicos
FUNçãOEm revisão

FSeek

FSeek( nHandle, nOffSet, [nOrigem] ) --> nRet

Posiciona o ponteiro de um arquivo em bytes.

FSeekAdvPL
01 · VISÃO GERAL

Visão geral

FSeek calcula o deslocamento a partir de FS_SET, FS_RELATIVE ou FS_END e devolve a posição absoluta desde zero. Mover ao fim com deslocamento zero permite obter tamanho, mas também altera o cursor. O exemplo comunitário mostra essa técnica e volta ao início; a adaptação abre somente leitura, consulta FError antes de continuar e fecha seu handle. Não confundir byte com caractere nem posição de arquivo com RecNo de tabela. (TOTVS, s.d., ref. 1)

02 · SINTAXE

Sintaxe

FSeek( nHandle, nOffSet, [nOrigem] ) --> nRet

Parâmetros

nHandle
NuméricoObrigatório

Handle válido obtido por FOpen/FCreate; zero também é válido.

nOffSet
NuméricoObrigatório

Deslocamento em bytes.

nOrigem
NuméricoOpcional

FS_SET=0, FS_RELATIVE=1, FS_END=2; padrão início.

Retorno

Nova posição absoluta em bytes a partir do início.

03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"
#Include "Fileio.ch"

User Function Ed396()
    Local nHandle := -1
    Local nErro := 0
    Local nTamanho
    // Arquivo ficticio existente no contexto de teste; leitura compartilhada.
    nHandle := FOpen("editorial-test.txt", FO_READ + FO_SHARED)
    If nHandle < 0
        nErro := FError()
        ConOut(cValToChar(nErro))
    Else
        nTamanho := FSeek(nHandle, 0, FS_END)
        nErro := FError()
        If nErro == 0
            ConOut(cValToChar(nTamanho))
            // Reposicionar antes de uma eventual leitura posterior.
            FSeek(nHandle, 0, FS_SET)
        Else
            ConOut(cValToChar(nErro))
        EndIf
        If !FClose(nHandle)
            ConOut(cValToChar(FError()))
        EndIf
    EndIf
Return Nil
Resultado esperado

Tamanho do arquivo de teste em bytes ou diagnóstico; nenhum valor fixo presumido. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Conferir caminho, permissões, plataforma e propriedade do handle. Fechar somente handles obtidos pela própria rotina, inclusive em tratamento de erros da aplicação completa.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. FSeek. TDN. Consulta em 2026-10-26.
  2. EURAI. ADVPL/Funcoes/Arquivos de Disco/FSeek.PRW. universo_do_desenvolvedor_site, commit a5c83e9490302bdb4a0fc5a9d92c2d569a60773c. Exemplo analisado. Consulta em 2026-10-26.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha