Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [.NET] Path differenziato Win7 - Win XP
Forum - C# / VB.NET - [.NET] Path differenziato Win7 - Win XP

Avatar
arterella (Normal User)
Rookie


Messaggi: 37
Iscritto: 14/07/2012

Segnala al moderatore
Postato alle 11:28
Mercoledì, 08/08/2012
ciao ragazzi,
vi spiego brevemente

questa funzione serve per controllare determinate righe di un file .xml e nel caso tutte le condizioni siano soddisfatte riscrivere sopra queste righe.
Il mio problema è che questo programma gira su pc con Xp ma anche con Windows 7..... e quindi il percorso dove trovare il file è diverso.....

Codice sorgente - presumibilmente VB.NET

  1. Private Sub _DeleteDummyFiles()
  2.         Dim lineaRicerca As String = "        <CheckedFTPPresence>false</CheckedFTPPresence>"
  3.         Dim lineaSostituzione As String = "        <CheckedFTPPresence>RIGENERATO</CheckedFTPPresence>"
  4.         Dim linee As String() = IO.File.ReadAllLines("c:/ProgramData\Settings.xml")
  5.         Dim lineacontrollo As String = "        <FileName>Dummy.txt</FileName>"
  6.         Dim oFileState As New Settings.FileState
  7.         Dim DataDate = oFileState.DataDate
  8.         Dim UploadDate = oFileState.UploadDate
  9.  
  10.  
  11.         For Each xDate In Me.Settings.SalesHeader.DatesExtracted
  12.             Dim xDateExtracted = xDate.Date
  13.             For i As Integer = 0 To linee.Count - 1
  14.                 If linee(i) = lineaRicerca Then
  15.                     If linee(i - 4) = lineacontrollo Then
  16.                         If UploadDate < Date.Now Then
  17.                             linee(i) = lineaSostituzione
  18.                         End If
  19.  
  20.                     End If
  21.                 End If
  22.  
  23.             Next
  24.             IO.File.WriteAllLines("c:/ProgramData\Settings.xml", linee)
  25.         Next
  26.     End Sub



C'è un modo per dirgli di cercare autonomamente dov'è questo file?
oppure è meglio se metto entrambi i percorsi?
Pero così facendo il programma credo vada in eccezione perchè non trova il percorso... :_doubt:


...per fare un uomo non basta un cervello....
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 11:49
Mercoledì, 08/08/2012
Ciao..
Se tu sai il percorso del file sia nel caso in cui il programma giri su pc con WinXp sia nel caso sia con Win7, la cosa mi sembra abbastanza banale..
Con
Codice sorgente - presumibilmente Plain Text

  1. My.Computer.Info.OSFullName


O istruzioni simili recuperi il nome del sistema operativo e di conseguenza con un IF assegni la path giusta del file.
Oppure con
Codice sorgente - presumibilmente Plain Text

  1. IO.File.Exists(filepath)


Puoi verificare se un file esiste e agire di conseguenza.
Se invece devi cercare il file che si chiama setting.xml per tutto l'HD del computer.. bhe.. non so se nel frameword ci siano funzioni già pronte per ricerche complete nel PC. Altrimenti devi scrivere tu un metodo ricorsivo. Ma non è difficile.
CIAO! :k:


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
faraoman (Member)
Rookie


Messaggi: 39
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 13:41
Mercoledì, 08/08/2012
allora, usa questa direttiva
Codice sorgente - presumibilmente Plain Text

  1. Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms)


Inizia con {Unità}:\ProgramData e seguiranno varie cartelle...
bene, da quì selezioni solo la prima parte cioè {Unità}:\ProgramData
e gli accodi il nome del file (Settings.xml)

Esempio
C:\ProgramData\Menu\Programs -> C:\ProgramData
C:\ProgramData + Settings.xml = C:\ProgramData\Settings.xml

in questo modo avrai il percorso radice relazionato all'OS (xp/Vista/7/8 ecc)
e dovrai solo accodarci il nome del file che intendi leggere


Ciao Faraoman ^_^
PM Quote
Avatar
arterella (Normal User)
Rookie


Messaggi: 37
Iscritto: 14/07/2012

Segnala al moderatore
Postato alle 10:10
Giovedì, 09/08/2012
Testo quotato

Postato originariamente da Renny:

Ciao..
Se tu sai il percorso del file sia nel caso in cui il programma giri su pc con WinXp sia nel caso sia con Win7, la cosa mi sembra abbastanza banale..
Con
Codice sorgente - presumibilmente Plain Text

  1. My.Computer.Info.OSFullName


O istruzioni simili recuperi il nome del sistema operativo e di conseguenza con un IF assegni la path giusta del file.
Oppure con
Codice sorgente - presumibilmente Plain Text

  1. IO.File.Exists(filepath)


Puoi verificare se un file esiste e agire di conseguenza.
Se invece devi cercare il file che si chiama setting.xml per tutto l'HD del computer.. bhe.. non so se nel frameword ci siano funzioni già pronte per ricerche complete nel PC. Altrimenti devi scrivere tu un metodo ricorsivo. Ma non è difficile.
CIAO! :k:



poi ieri, pochi minuti dopo aver postato, avevo fatto così

Codice sorgente - presumibilmente Plain Text

  1. System.IO.File.Exists("Settings.Xml")
  2.             My.Computer.FileSystem.FileExists("Settings.Xml")



però ho avuto una richiesta per una modifica ad un altro programma ed ho accantonato questo.
pomeriggio provo in debug e poi vi so dire se funziona


...per fare un uomo non basta un cervello....
PM Quote
Avatar
arterella (Normal User)
Rookie


Messaggi: 37
Iscritto: 14/07/2012

Segnala al moderatore
Postato alle 14:15
Giovedì, 09/08/2012
niente con il primo metodo perchè mi va nella cartella Utente.

con environment..... ho un problema....
se in win7 C:\ProgramData corrisponde a C:\Documents and Settings\All Users\Dati applicazioni\ di sistemi come winXP, con questa cosa dell'Environment come faccio a dirgli di partire da C:\?
non ci riesco perchè mi fa andare direttamente in program data, che va bene per win7 ma per xp no....



...per fare un uomo non basta un cervello....
PM Quote
Avatar
arterella (Normal User)
Rookie


Messaggi: 37
Iscritto: 14/07/2012

Segnala al moderatore
Postato alle 15:24
Giovedì, 09/08/2012
Alla fine ho fatto così:

Codice sorgente - presumibilmente VB.NET

  1. For Each xDate In Me.Settings.SalesHeader.DatesExtracted
  2.             Dim xDateExtracted = xDate.Date
  3.             Dim Percorso = "c:/ProgramData\Settings.xml" 'Win 7
  4.             Dim Percorso2 = "C:\Documents and Settings\All Users\Dati applicazioni\\Settings.xml" 'Win Xp
  5.             If System.IO.File.Exists(Percorso) Then
  6.  
  7.                 'PER WINDOWS 7
  8.  
  9.  
  10.                 Dim linee As String() = IO.File.ReadAllLines(Percorso)
  11.                 Dim oFileState As New Settings.FileState
  12.                 Dim DataDate = oFileState.DataDate
  13.                 Dim oTempSettings = CType(Me.Settings.Clone, Phoenix.DataCollect.Settings.Settings)
  14.  
  15.                 For Each oElement In Me.Settings.SalesHeader.FileState
  16.                     If oElement.DataDate = xDateExtracted Then
  17.                         If oElement.CheckedFTPPresence = False Then
  18.                             Me._Force = True
  19.                             _CreateAndUploadFilesPeriod2(DataDate)
  20.                         Else
  21.                             Me._Force = False
  22.  
  23.                         End If
  24.                     End If
  25.                 Next
  26.                               Me._Force = False
  27.          
  28.             Else
  29.  
  30.                 If System.IO.File.Exists(Percorso2) Then
  31.  
  32.                     'PER WINDOWS XP
  33.                     Dim linee2 As String() = IO.File.ReadAllLines(Percorso2)
  34.  
  35.                     Dim oFileState As New Settings.FileState
  36.                     Dim DataDate = oFileState.DataDate
  37.                     Dim oTempSettings = CType(Me.Settings.Clone, Phoenix.DataCollect.Settings.Settings)
  38.  
  39.                     For Each oElement In Me.Settings.SalesHeader.FileState
  40.                         If oElement.DataDate = xDateExtracted Then
  41.                             If oElement.CheckedFTPPresence = False Then
  42.                                 Me._Force = True
  43.                                 _CreateAndUploadFilesPeriod2(DataDate)
  44.                             Else
  45.                                 Me._Force = False
  46.  
  47.                             End If
  48.                         End If
  49.                     Next
  50.                
  51.                     Me._Force = False
  52.                 End If
  53.             End If
  54.         Next



...per fare un uomo non basta un cervello....
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 17:21
Giovedì, 09/08/2012
Perché ripeti 2 volte le stesse istruzioni di lettura del file XML quando l'unico valore che cambia è il percorso del file?
Se fai un if, verifichi se il file esiste e poi poi imposti il percorso del file di conseguenza..


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
arterella (Normal User)
Rookie


Messaggi: 37
Iscritto: 14/07/2012

Segnala al moderatore
Postato alle 17:57
Giovedì, 09/08/2012
Testo quotato

Postato originariamente da Renny:

Perché ripeti 2 volte le stesse istruzioni di lettura del file XML quando l'unico valore che cambia è il percorso del file?
Se fai un if, verifichi se il file esiste e poi poi imposti il percorso del file di conseguenza..



mh mi andava in eccezione :S

Domani mattina riprovo ;)
grazie :k:

Ultima modifica effettuata da arterella il 09/08/2012 alle 17:57


...per fare un uomo non basta un cervello....
PM Quote