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