Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [delphi] creare file di testo

    ciao ragà...
    Mi chiedevo se esistono altri metodi per creare un file di testo
    (*.doc) con all'interno dei valori richiamati dall'applicazione stessa...
    Io uso questo codice

    procedure...
    var
    f: textfile;
    a: integer;
    begin
    assignfile(f, 'my doc.doc');
    rewrite(f);
    writeln(f,'my text...'+formatfloat('0.00',var));
    .
    .
    .
    closefile(f);
    end;

    solo che, poichè creo delle relazioni di calcolo molto lunghe e dettagliate, mi servirebbe un metodo per inserire anche delle tabelle, cambiare stile di testo (ad esempio il titolo in grasseto ed il resto normale...,cose che non posso fare perchè la relazione la scrivo nelle unit), per evitare anche di scrivere sempre writeln(f,'')...

    sperando che mi sia spiegato, mi consigliate un altro metodo se ne esistono??
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Testo formattato DOC o HTML

    Per la scrittura di file di testo, oltre alle routine standard ereditate dal buon vecchio Pascal, puoi utilizzare anche la classe TStringList, la stessa che viene adottata dal controllo TMemo per contenere il proprio testo.
    codice:
    var
      S: TStringList;
    begin
      S := TStringList.Create;
      try
        S.Add('...');
        // ...
        S.SaveToFile('Filename.txt');
      finally
        S.Free;
      end;
    end;
    Attraverso il costruttore Create, si crea un'istanza della classe; il metodo Add aggiunge righe di testo includendo un ritorno a capo, richiamandolo ogni volta che è necessario. In alternativa, è possibile definire il testo da salvare impostandolo nella proprietà Text direttamente.

    Quando l'operazione è completa, il metodo SaveToFile permette di riversare il testo all'interno del file avente il nome specificato come parametro.

    E' una soluzione maggiormente object oriented per il salvataggio di testo, sempre "plain", s'intende, cioè senza formattazione...puro ASCII.

    Se desideri salvare file .DOC, in tal caso ti servono componenti in grado di manipolare quel formato di file; in generale, si ricorre all'uso dei componenti di OLEAutomation (pagina "Servers" della Palette dei Componenti), ma l'applicazione di riferimento (Word, in questo caso) DEVE essere installata. In alternativa a questi componenti, ne esistono altri gratuiti e Open Source: TurboPower OfficePartner.
    Si tratta di un formato (DOC) proprietario, pertanto servono componenti di automazione in grado di conoscerlo e salvare in modo appropriato documenti in tale formato.

    Secondo me, per le tue esigenze si adatterebbe meglio un semplice file HTML, con il quale puoi riprodurre tabelle, stili e altro ancora...tutto quello che ti serve.

    Trattandosi sempre di un file ASCII, potresti gestire tutto con la StringList memorizzando testo contenente gli elementi di markup (i tag) che servono per differenziare la formattazione dei contenuti, anche se esistono componenti in grado di rendere forse più semplice questo compito, ad esempio il TPageProducer (pagina "Internet" della Palette dei Componenti), che fa parte della tecnologia WebBroker di cui dispone Delphi.

    Se la risposta non ti soddisfa, definisci meglio il tuo problema e le tue necessità.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    La tua risposta è stata molto chiara e mi ha fatto capire le varie strade che posso intraprendere per risolvere il mio problema...
    la mia domanda è:
    Creo un file .doc con una relazione standard e una tabella preformattata: a questa relazione posso inserire (nei posti che voglio io ad es. dentro la tabella) dei dati provenienti dalla mia applicazione?

  4. #4
    Certo, tutto é possibile.
    La parte più difficile, ma anche più interessante per un programmatore, é permettere alle proprie applicazioni di creare documenti che possano essere visti da tutti.

    Supponento di volere come output un testo tipo:
    codice:
     
      s := 'Gentile Pinco Pallino grazie per ...'
      ...
      ...
    Ad esempio puoi introdurre :
    codice:
     
     Nome : array [0..3] of string= (
                        'Caio e Tizio',
                        'Pippo',
                        'Pluto',
                        'Paperino');
    var
      i: integer;
    ..
    ..
      for i := 0 to High(Nome) - 1 do
        s := 'Gentile '+ Nome[i] +' grazie per ...;
    In questo modo potrai modificare la stringa in base ad alcuni valori che definisci in precedenza e che forniranno l'output voluto solo a runt-time.


  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da carmelo81
    Creo un file .doc con una relazione standard e una tabella preformattata [...]
    Cosa intendi con relazione standard?

    Devi cercare di spiegare al meglio cosa stai cercando di ottenere, magari esemplificando.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    intendo un file di testo .doc scritto a metà, da inserirlo nel progetto e finirlo con dei valori immessi dal mio programma.
    In parole povere io ho sviluppato un programma di calcolo per progettare le coperture in legno. Con lo stesso programma compilavo la relazione di calcolo (con il codice prima descritto).
    Poichè la relazione comprende frasi da nn modificare, ad esempio

    Dati travi:
    Base, cm = ....
    Altezza, cm = ...
    Area, cmq = ....

    vorrei creare un file tipo (relazione.doc) con la scritta ad es.
    Dati travi:
    Base, cm = ....
    Altezza, cm = ...
    Area, cmq = ....

    per poi il programma continuare ad immettere i valori nei puntini, poiche sono valori variabili
    Dati travi:
    Base, cm = 20
    Altezza, cm = 20
    Area, cmq = 400
    e cosi via...
    spero mi sia spiegato

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Ora è più chiaro. Ma perchè al posto di un file DOC non crei un semplice report?

    Puoi usare QuickReport oppure RAVE Reports, inclusi entrambi in Delphi; si tratta di progettare una stampa in uscita, che puoi all'occorrenza esportare in file RTF, in file PDF (addirittura) e altri formati ancora, se li si preferisce alla classica stampa su foglio cartaceo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    proverò allora ad usare i reports...
    mi dai una spinta su come agire visto che nn li ho mai usati?
    che ne diresti di un esempio pretico...
    grazie

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Non ho esempi pratici da mostrare al momento, ma puoi iniziare leggendo qui.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    bene grazie quando ne avrai qualcuno sottomano fammelo avere please..
    Ciao e grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.