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![]()
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![]()
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?
----------------------------------------------------
<%
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
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
Se hai bisogno di chiarimenti famme sape'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 devo poter gestire il discorso lettera nono c'é soluzione?
cosa intendi per "discorso lettera"???? :master:
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?
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![]()
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?
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
se il tuo sito si trova in C:\siti\tuosito\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
Server.MapPath("parole.txt") restituisce C:\siti\tuosito\parole.txt
![]()