salve ragazzi.
il problema di oggi e' quello di risucire a fare il parsing di un vettore di stringhe (che per la cronaca contiene questo):
100 VTR Ready
201 OK
4
0 "/mnt/Qnap1Multimedia/03_Playout/Artisti Oggi/01 artisti oggi ok 17-12-2009.mpg" 0 49329 49330 49330 25.00
1 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/acquedotto ok.mpg" 0 4194 4195 4195 25.00
2 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/agricoltura ok.mpg" 0 4803 4804 4804 25.00
3 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 0 7703 7704 7704 25.00
al fine di individuare la riga che contiene il numero di files in coda (in questo caso quella con il 4) e poi le righe che contengono indicazioni sui singoli files in lista.
l'operatore like mi sembra un po' limitato,
per esempio come faccio a dirgli di controllare che la riga deve iniziare con un numero (arbitrariamente lungo) senza niente dopo?
For Each stringa In Ritorno
If stringa Like "[0-9]" Then
Print stringa
Endif
Next
non mi funziona ... neanche con il solo '4' (anche perche' sospetto che la riga contenga caratteri non stampabili ....
......
tra' l'altro facendo alcune modifiche al codice per vedere piu' in profondita' cosa mi ritorna sto cavolo de server attraverso il telnet ... mi sono accorto che il vettore non e' composto SEMPRE di righe ben definite ... ma e' un bel casino .....
tentativo di connessione ...
connesso!!!
il vettore della risposta contiene 2 righe.
Questo il loro contenuto:
riga 0
100 VTR Ready
201 OK
riga 1
4
0 "/mnt/Qnap1Multimedia/03_Playout/Artisti Oggi/01 artisti oggi ok 17-12-2009.mpg" 0 49329 49330 49330 25.00
1 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/acquedotto ok.mpg" 0 4194 4195 4195 25.00
2 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/agricoltura ok.mpg" 0 4803 4804 4804 25.00
3 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 0 7703 7704 7704 25.00
in allegato il sorgente del progetto consolle ...
qualcosina ho rislto con l'operatore "split"
http://gambasdoc.org/help/lang/split
ma l'output e' sempre una schifezza
il vettore della risposta contiene 2 righe.
Questo il loro contenuto:
riga 0
100 VTR Ready
201 OK
mentre la risposta separata con i caratteri escape e':
->100 VTR Ready
->201 OK
riga 1
4
0 "/mnt/Qnap1Multimedia/03_Playout/Artisti Oggi/01 artisti oggi ok 17-12-2009.mpg" 0 49329 49330 49330 25.00
1 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/acquedotto ok.mpg" 0 4194 4195 4195 25.00
2 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/agricoltura ok.mpg" 0 4803 4804 4804 25.00
3 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 0 7703 7704 7704 25.00
mentre la risposta separata con i caratteri escape e':
->4
->0 "/mnt/Qnap1Multimedia/03_Playout/Artisti Oggi/01 artisti oggi ok 17-12-2009.mpg" 0 49329 49330 49330 25.00
->1 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/acquedotto ok.mpg" 0 4194 4195 4195 25.00
->2 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/agricoltura ok.mpg" 0 4803 4804 4804 25.00
->3 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 0 7703 7704 7704 25.00
in allegato il nuovo codice
non mi funziona ... neanche con il solo '4' (anche perche' sospetto che la riga contenga caratteri non stampabili ....
Inserisci il meta-carattere dell'asterisco *
If stringa Like "[0-9]*" Then
...
...controllando con instr() e isnumber() dovresti risolvere...
Interessante.
Si potrebbe suggerire anche la funzione Left() al posto di instr():
If IsNumber(Left(stringa, 1)) Then....
...per essere ancor più sicuro che stai trattando proprio un carattere ASCII che rappresenta un numero, forse è meglio:
If IsDigit(Left(stringa, 1)) Then....
inizia a prendere forma il progetto e a breve mettero' in pratica i vostri suggerimenti .....
nel frattempo ho iniziato ad "ISOLARE" le varie richieste in modo da avere in ANTICIPO un'idea delle POSSIBILI risposte dal server (in modo da dover analizzare stringhe piu' specifiche).
infatti con due comandi (uno che lista i contenuti ed uno che chiede lo stato di playback) ottengo qursti (diversi) risultati .... che poi parsero' opportunamente:
allegfede@PRSose:~/OTVA app/client/xml_demon$ ./lancher.sh
OTVA deamon for channel: Tele Galileo
DB_server: 192.168.1.91:3306
DB_account: OTVA_user:OTVA_password
refresh frequency: 30 minutes
Melted server: localhost:5250
select * from MediaPlaylist where channel = 'Tele Galileo' and data = '11/29/2013' order by start_time
ci sono 0 media in lista
select * from SpotPlaylist where channel = 'Tele Galileo' and date = '11/29/2013' order by time
ci sono 0 spot in lista
tentativo di connessione ...
connesso!!!
Melted PlAYLIST (GetMeletdContent)
il vettore della risposta contiene 2 righe.
Questo il loro contenuto:
riga 0
100 VTR Ready
201 OK
mentre la risposta separata con i caratteri escape e':
->100 VTR Ready
->201 OK
riga 1
4
0 "/mnt/Qnap1Multimedia/03_Playout/Artisti Oggi/01 artisti oggi ok 17-12-2009.mpg" 0 49329 49330 49330 25.00
1 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/acquedotto ok.mpg" 0 4194 4195 4195 25.00
2 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/agricoltura ok.mpg" 0 4803 4804 4804 25.00
3 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 0 7703 7704 7704 25.00
mentre la risposta separata con i caratteri escape e':
->4
->0 "/mnt/Qnap1Multimedia/03_Playout/Artisti Oggi/01 artisti oggi ok 17-12-2009.mpg" 0 49329 49330 49330 25.00
->1 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/acquedotto ok.mpg" 0 4194 4195 4195 25.00
->2 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/agricoltura ok.mpg" 0 4803 4804 4804 25.00
->3 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 0 7703 7704 7704 25.00
tentativo di connessione ...
connesso!!!
Melted STATUS (GetMeletdStatus)
il vettore della risposta contiene 2 righe.
Questo il loro contenuto:
riga 0
100 VTR Ready
202 OK
mentre la risposta separata con i caratteri escape e':
->100 VTR Ready
->202 OK
riga 1
0 stopped "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 1357 0 25.00 0 7703 7704 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 1357 0 7703 7704 1 4 3
mentre la risposta separata con i caratteri escape e':
->0 stopped "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 1357 0 25.00 0 7703 7704 "/mnt/Qnap1Multimedia/03_Playout/archivio video tg/a/albergo interni.mpg" 1357 0 7703 7704 1 4 3
PS: in allegato il codice e lo script bash, ma se volete provare a replicare il comportamento del server vi tocca compilare melted
http://www.mltframework.org/bin/view/MLT/BuildScripts
ed ovviamente commentare le righe relative alla connessione al DB mysql ...