Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    StringGrid e StringList

    Ciao a tutti,
    da un file txt prelevo il contenuto e lo carico in una stringlist per poi visualizzare le singole righe in una StringGrid, e fino a qui nessun problema. Dovrei filtrare il testo caricato nella stringlist in modo che ad ogni riga venga visualizzato solo una parte del testo (per questo uso la funzione LeftStr) ma qui ho alcuni problemi. Se filtro il testo ad ogni riga, la StringGrid mi da errore perchè gli assegno una string al posto di una TstringList, se invece filtro l'intero contenuto del file txt ovviamente non me lo divide per righe.

    Esempio:

    sl := TStringList.Create;
    sl.text := MemoDisplay;
    StringGrid1.RowCount := sl.Count;
    StringGrid1.Cols[0] := LeftStr(sl.text, 40);
    ERRORE: [Pascal Error] RaceData.pas(78): E2010 Incompatible types: 'TStrings' and 'string'

    sl := TStringList.Create;
    sl.text := LeftStr(MemoDisplay, 40);
    StringGrid1.RowCount := sl.Count;
    StringGrid1.Cols[0] := sl;
    NESSUN ERRORE ma la funzione Left viene eseguita sull'intero contenuto del file e non su ogni riga.


    Sapete dirmi come posso fare per gestire questo passaggio?
    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Osservando questa parte del codice

    codice:
    StringGrid1.Cols[0] := LeftStr(sl.text, 40);
    ERRORE: [Pascal Error] RaceData.pas(78): E2010 Incompatible types: 'TStrings' and 'string'
    l'errore è facilmente individuabile. Ciascun elemento della proprietà Cols non è una stringa (string), ma un'istanza di TStringList, cioè una lista di stringhe che rappresentano ciascuna il contenuto di una precisa riga. In alternativa, esiste l'analoga proprietà Rows che si comporta allo stesso modo ma consente di selezionare prima la riga e, in seguito, la colonna.

    Ciò che tu devi indirizzare non è un'intera riga, ma precisamente la cella in cui tu devi andare a scrivere.

    Ad esempio, supponendo di voler scrivere nella seconda riga alla prima colonna, basta scrivere:

    codice:
      StringGrid1.Cols[0].Strings[1] := 'Testo';
    oppure

    codice:
      StringGrid1.Rows[1].Strings[0] := 'Testo';
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Ok, grazie ora almeno questo funziona. Ho messo tutto in un ciclo for in modo da prelevare ogni singola riga finchè ce ne sono (non so a priori quante righe sono presenti nel file).
    www.beppegrillo.it
    Il blog di Beppe!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.