Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [vb.net]file e righe

    ciao.
    Devo trovare un algoritmo efficente per inserire 2 righe in un file di testo prima dell'occorrenza di una determinata stringa.
    Ad es:
    righe:

    1.#include "stdafx.h"
    2.AfxMessageBox("pippo è alto")


    l'ocorrenza è "pippo è alto"
    e diventa:

    1.#include "stdafx.h"

    2.CString strid=new CString
    3.strid.LoadString("IDSPIPPO")
    4.AfxMessageBox(strid)

    Il metodo da me pensato è di ritrovare tutte le righe del file di testo , quindi scorrerle ed andare ad inserire prima dell'occorrenza di "pippo è alto" le 3 righe ,ma è molto lento.
    si potrebbe realizzare con un espressione regolare ?
    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da giuseppe500
    si potrebbe realizzare con un espressione regolare ?
    Dipende dal criterio con cui devono essere ricercate le righe da far precedere e seguire con quelle da inserire nel file.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Originariamente inviato da alka
    Dipende dal criterio con cui devono essere ricercate le righe da far precedere e seguire con quelle da inserire nel file.
    grazie alka
    pero' non capisco,le righe da far precedere sono fisse(anche se all'interno si modificano alcune stringhe) e devono solo essere messe in testa alla riga da cambiare,


    1.#include "stdafx.h"
    2.AfxMessageBox("pippo è alto")


    l'ocorrenza è "pippo è alto"
    e diventa:

    1.#include "stdafx.h"

    2.CString strid=new CString//riga inserita
    3.strid.LoadString("IDSPIPPO")//riga inserita
    4.AfxMessageBox(strid)//riga cambata

    io ho la stringa "pippo è alto"(cambia riga 4) e l'id IDSPIPPO(cambia le righe da inserire).

    per chiarirmi meglio è un addin per l'internazionalizzazione di progetti c++.
    Devo trovare tutte le occorrenza valide di stringhe e messaggi (afxmessagebox("pippo") o printf "pippo".
    La rutine per trovare le occorrenze l'ho gia sviluppata , con le espressioni regolari.
    devo solo sviluppare la rutine per il replace delle vecchie occorrenze con un loadstring che carica dalla string table, che ho gia popolato.
    Nel db infatti trovo l'occorrenza("pippo è alto") e l'id(dalla string table)dell'insermento pippo è alto nella string table.
    ps . è possibile utilizzare il loadstring in maniera diversa ?
    ossia
    4.AfxMessageBox(::loadstring(IDSPIPPO))?????????
    cosi eviterei molti crucci perchè basterebbe sostituire l'occorrenza con il suo id.
    solo che nell' espressione come sopra mi chiede altri 3 parametri che non capisco.
    grazie.questo lo sposto in programmazione perchè va ot il c++

    grazie

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Se si tratta di un add in, occorre documentarsi probabilmente sul CodeDom, cioè su quella parte della libreria di classi del .NET Framework che è in grado di "razionalizzare" il codice sorgente costruendo un modello ad oggetti che lo rappresenti e consenta poi di estenderlo.

    Non so se tale modello funziona però anche sui sorgenti codificati in linguaggio C++.

    In caso contrario, non puoi far altro che lavorare con espressioni regolari, poiché le istruzioni che devi sostituire potrebbero non essere necessariamente tutte espresse nel modo che hai presentato, ed avere magari spazi e altri elementi che - pur ottenendo lo stesso effetto dal punto di vista del compilato - sono scritte in modo diverso.

    Insomma, stai affrontando un problema che non è proprio una "passeggiata" e richiede un certo bagaglio di conoscenze e capacità, a mio avviso, per essere risolto con successo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie alka.
    Ho utilizzato le espressioni regolari come da tuo consiglio e sembra funzionare,solo che ho dei problemi nella ricerca di stringhe con parentesi,ricercando queste infatti mi da questo errore:

    An unhandled exception of type 'System.ArgumentException' occurred in system.dll
    Additional information: parsing "^.*"0.8*(1-2.7^(10900-5051)/3600))".*$" - Too many )'s.

    perchè si preoccupa di testare il numero di parentesi all'interno della stringa?
    ho visto anche che non è un problema di vb.net.
    è risolvibile?

    grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    le espressioni regolari mi danno dei problemi tutte le volte che inserisco dei caratteri speciali nel espressione ossia parentesi \n \r ecc...
    in pratica essendo nell'espressione li vede come operatori e non come parte della stringa.
    c'è un metodo per evitare questo?
    grazie.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [vb.net]regexp linee prima dopo

    ciao.
    Volevo sapere se è possibile recuperare con le regexp 10 righe prima dell'occorrenza e 10 dopo.
    grazie.

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

    Moderazione

    Ho unito le discussioni che hai aperto sull'espressione regolare. Ti invito nuovamente a non aprire discussioni per trattare problemi che sono strettamente correlati tra loro, come in questo caso.

    Ne hai già tante attive per lo stesso problema che ormai è quasi diventato impossibile tenerne traccia.

    Non mi pare corretto aprire una discussione nuova ogni volta che devi modificare appena la condizioni che la tua espressione regolare deve valutare, ad esempio passando da una riga a dieci.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Spero di non aver sbagliato a postare qui.
    Ho un espressione regolare con all'interno un carattere ! e cerca su una stringa con carattere !.
    questo manda tutto in errore, io devo trovare la stringa con all'interno il !.
    forse fa confusione coi caratteri speciali?
    ho provato con a sostituire ! in \! ma continua a sbagliare!.

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.