Luciano, acho que no FPC/Lazarus tu podes fazer isso mais facilmente.

É só colocar o livro pai em um TStringList e iterar as linhas deste
StringList, cortando-o onde quiseres.
Algo assim (não testei, na verdade estou criando a função agora mesmo):

procedure Iterador_Texto (arquivo_pai: string);
var
  sl, slaux : TStringList;
  seq : integer;
begin
  seq := 1;
  sl := TStringList.Create;
  slaux := TStringList.Create;
  try
     sl.LoadFromFile(arquivo_pai + '.txt');
     linha := 1;
     while linha < sl.Count do
     begin
        {Aqui colocas o código para tratar as linhas, por exemplo, colocar
em outro String List a cada 10 linhas e salvar}
        slaux.append(sl[linha]);
        if linha mod 10 = 0 then
        begin
             slaux.SaveToFile(arquivo_pai + '_' + IntToStr(seq) + '.txt');
             slaux.clear;
             Inc(seq);
        end;
        Inc(linha);
     end;
  finally
    sl.Free;
  end;
end;

Se propuseres este problema na lista do Lazarus, vais ter a solução fácil,
fácil.

Abraços.


Em 14 de janeiro de 2013 12:25, luciano de souza <[email protected]>escreveu:

> Caros,
> Desejo criar um Shellscript que realize as seguintes tarefas:
> 1. Lê um arquivo de texto;
> 2. Separa-o em uma coleção de arquivos com número determinado de linhas;
> 3. Coloca no início de cada arquivo, o nome do arquivo-pai sem a
> extensão, mas seguido de um número sequencial.
>
> Este é o início para que consiga preparar um arquivo de texto para
> conversão em audiolivro utilizando a síntese de voz do Espeak. Suponha
> o seguinte comando:
>
> audiobook -i "Os miseráveis.txt" -s 200
>
> Como resultado ele deveria produzir:
>
> Os miseráveis01.txt
> Os miseráveis02.txt
> Os miseráveis03.txt
>
> No início, por exemplo, de "os miseráveis03.txt", teríamos:
>
> Os miseráveis03
>
> {continuação do texto de Os miseráveis02}
>
> O que basicamente preciso saber para construir este script? Ler
> arquivos, linha por linha verificando se um contador é igual ao
> tamanho passado como parâmetro.
>
> Entretanto, não sei como iterar sobre as linhas de um arquivo
> utilizando Shellscript. Se fosse Pascal, seria algo mais ou menos
> assim:
>
> var
> f: text;
> s: string;
> I: integer;
>
> begin
> assign(f, 'Os miseráveis.txt');
> reset(f)
> i := 0;
> while not eof(f) do
> begin
> readln(f, s);
> { Fazer alguma coisa com "s"}
> inc(i);
> end;
> close(f);
> end.
>
> Muito provavelmente necessitarei de um bocado de tentativas até que
> tenha o meu script de audiolivros pronto. O que desejo é uma
> orientação sobre o que estudar afim de conseguir gerar este script.
> Não estou certo se a minha pergunta é apropriada para este grupo, mas
> não conheço grupos sobre shellscript.
> Luciano
>
> --
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>
> Lista de discussão Ubuntu Brasil
> Histórico, descadastramento e outras opções:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
>



-- 
Prof. André Cavalcante
Universidade Federal do Amazonas (UFAM)
Manaus, AM., Brasil

Ubuntu User number # 24370
Quer saber sobre Open Source Software? http://sobreoss.blogspot.com
Quer saber mais sobre Espiritismo? http://sobreespiritismo.blogspot.com

Atenção: Este e-mail pode conter anexos no formato ODF (Open Document
Format)/ABNT (extensões odt, ods, odp, odb, odg). Antes de pedir os anexos
em outro formato, você pode instalar gratuita e livremente o LibreOffice (
http://pt-br.libreoffice.org/).
-- 
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece

Lista de discussão Ubuntu Brasil
Histórico, descadastramento e outras opções:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

Responder a