Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Array

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    102

    Array

    allora:
    ho una variabile che si chiama strResponse, i dati contenuti in questa variabile li recupero da un file di testo, avrei bisogno di riordinare il tutto in ordine alfabetico.
    Ok posso usare un array ma come faccio?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao francy_eb,

    i dati li recuperi da un file di testo... e come sono sti dati? Cosa devi ordinare? le varie righe?
    potresti postare un po' di codice?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    102

    Eccovi il codice

    ----------------------------------------------------
    <%
    Const ForReading = 1
    Dim irow, fso, f, RigaFile, txtResponse
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("c:\parole.txt", ForReading)
    do while f.AtEndOfStream = false
    RigaFile = f.ReadLine
    If UCase(Left(RigaFile, 1)) = "A" Then
    strResponse = RigaFile & "
    "
    End If
    Response.Write strResponse
    loop
    f.Close
    %>
    ----------------------------------------------------
    Una vola recuperati tutti le stringhe che iniziano per "A" dovrei riodinarle ma sto impazzendo
    Grazie

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ops! Non mi ero acccorto della notifica di risposta

    il codice che hai postato visualizza tutte le righe che iniziano con a

    se vuoi ordinare tutto ti conviene leggere tutto il file in un colpo solo, metterlo in un array e ordinare l'array
    ti faccio un esempio
    codice:
    <% 
    Const ForReading = 1 
    Dim irow, fso, f, RigaFile, txtResponse 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set f = fso.OpenTextFile("c:\parole.txt", ForReading)
    strResponse = f.ReadAll '<--Leggo tutto il file di testo
    arr = Split(strResponse,vbCrLf) '<--Creo l'array splittando sul carattere di fineriga ritorno a capo
    f.Close 
    
    '---ORDINO L'ARRAY------
    continua=true
    do while continua
    	continua=false
    	for i=LBound(arr) to UBound(arr)-1
    		if arr(i)>arr(i+1) then
    			temp=arr(i)
    			arr(i)=arr(i+1)
    			arr(i+1)=temp
    			continua=true
    		end if
    	next
    loop
    '---STAMPO A VIDEO L'ARRAY ORDINATO
    for i=LBound(arr) to UBound(arr)
    	Response.Write arr(i) & "
    " & vbCrLf
    next
    %>
    Se hai bisogno di chiarimenti famme sape'

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    102

    Ma

    se devo poter gestire il discorso lettera nono c'é soluzione?

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    cosa intendi per "discorso lettera"???? :master:

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    102

    Scusa

    Effettivamente non mi sono spiegata molto bene.
    Il dovrei poter stampare in ordine albafetico solo le parole che iniziano per "A" per "B" per "C" e per "D"
    È possibile?

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    se è così...
    dopo aver ordinato, per stampare a video solo le righe che iniziano con le lettere che vuoi tu, potresti fare così:
    codice:
    '---STAMPO A VIDEO L'ARRAY ORDINATO
    LettereDaVisualizzare = "ABCD" '<--Qui metti tutte le lettere che vuoi visualizzare 
    iniziale = ""
    for i=LBound(arr) to UBound(arr)
    	if iniziale<>UCase(Left(arr(i),1)) then
    		iniziale=UCase(Left(arr(i),1))
    		'se vuoi anche stampare l'iniziale
    		if InStr(LettereDaVisualizzare,iniziale)>0 then
    			Response.Write "" & iniziale & "
    " & vbCrLf
    		end if
    	end if
    	if InStr(LettereDaVisualizzare,iniziale)>0 then
    		Response.Write arr(i) & "
    " & vbCrLf
    	end if
    next

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    102

    Perfetto ma ...

    Ok grazie perfetto
    Ma rimane ancora un piccolo problema quando faccio la chiamata al file:
    -----------
    Set f = fso.OpenTextFile("c:\parole.txt", ForReading)
    ----------
    Se non gli metto il percorso univoco mi da errore, come posso risolvere il problema?

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    per "percorso univoco" intendi il percorso fisico del file C:\ecc...
    il FileSystemObject legge file nel server ed ha bisogno peffozza di un percorso fisico. Se tu vuoi usare un percorso relativo o assoluto rispetto il tuo sito web puoi usare Server.MapPath
    codice:
    Const ForReading = 1 
    Dim irow, fso, f, RigaFile, txtResponse 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    strPercorsoWeb = "/parole.txt"
    strPercorsoFisico = Server.MapPath(strPercorsoWeb )
    Set f = fso.OpenTextFile(strPercorsoFisico ForReading)
    strResponse = f.ReadAll '<--Leggo tutto il file di testo
    arr = Split(strResponse,vbCrLf) '<--Creo l'array splittando sul carattere di fineriga ritorno a capo
    f.Close
    se il tuo sito si trova in C:\siti\tuosito\
    Server.MapPath("parole.txt") restituisce C:\siti\tuosito\parole.txt

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.