zui > edb.programmering.* > edb.programmering.pascal

Hauge (19.02.2011, 11:28)
Hej

Jeg håber der er liv i gruppen, selvom det er længe siden der sidst har
været et indlæg.

Jeg er i gang med et projekt, hvor jeg via telnet snakker med min
Pioneer receiver, hvor man kan se hvad der står på displayet og mange
andre ting.

Men.. Receiveren har også indbygget netradio, dvs. det stykke musik der
spilles, vises som lysavis på displayet, der, som altid, kun har 16 tegn.

Det jeg kan se via telnet, er samme 16 tegn ad gangen, der så ruller,
men det er jo gammelkendt.

Jeg vil gerne lægge teksten sammen, så hvis nu receiveren ruller 25 tegn
i én uendelig løkke, at jeg kan lægge det sammen, og få én linje på 25 tegn.

Der er desværre ingen indikation på, hvornår linjen starter, og lige nu
er jeg lidt blank, mht. hvordan jeg lige skal lægge sammen, sammenligne
og slette, hvis forskellen fra foregående linje er for stor, hvor man så
kan forvente at det er en ny tekst.

Kaster lige et eksempel på hvad receiveren sender ud:

FL02596F7520416E64204D6520285468
You And Me (Th

FL026F7520416E64204D652028546865
ou And Me (The

FL027520416E64204D65202854686520
u And Me (The

FL0220416E64204D6520285468652050
And Me (The P

FL02416E64204D65202854686520506F
And Me (The Po

FL026E64204D65202854686520506F77
nd Me (The Pow

FL0264204D65202854686520506F7765
d Me (The Powe

Teksten i hex, er den rå tekst fra receiveren, den læsbare tekst er det
jeg dekoder til menneskesprog.

Udfra det der er i mit eksempel, kan jeg jo totalt få:

"You And Me (The Powe"

Jeg håber mit lille problem er til at forstå, og at der er nogen der har
en idé om hvordan jeg lige kommer i gang.

På forhånd tak.

Mvh Hauge
Uffe Kousgaard (19.02.2011, 17:19)
"Hauge" <hauge> wrote in message
news:8qu1
> Jeg håber der er liv i gruppen, selvom det er længe siden der sidst har
> været et indlæg.


Hvis du kan engelsk, så brug forums.embarcadero.com i stedet. Langt mere
aktivitet. Kræver dog, at du opretter dig som bruger.

> Jeg vil gerne lægge teksten sammen, så hvis nu receiveren ruller 25 tegn i
> én uendelig løkke, at jeg kan lægge det sammen, og få én linje på 25 tegn.


Jeg ville læse én linie og så blive ved med at tilføje det sidste tegn i
næste linie indtil den netop læste linie er magen til den første. Burde det
ikke virke?

readln(s);
s1:= s;
s_resultat:= s;
repeat
readln(s);
if s<>s1 then s_resultat:= s_resultat+s[length(s)];
until s=s1;

Hvordan du finder ud hvor i linien at teksten starter kræver noget
yderligere viden. Et punktum eller 2 mellemrum i træk eller lignende.
Hauge (19.02.2011, 17:43)
Hej
Den 19-02-2011 16:19, Uffe Kousgaard skrev:
> Hvis du kan engelsk, så brug forums.embarcadero.com i stedet. Langt mere
> aktivitet. Kræver dog, at du opretter dig som bruger.


Det vil jeg gøre, tak :)

> Jeg ville læse én linie og så blive ved med at tilføje det sidste tegn i
> næste linie indtil den netop læste linie er magen til den første. Burde det
> ikke virke?


Jo, hvis jeg på nogen måde kunne tjekke hvornår en ny linje starter, det
er desværre ikke muligt.

> Hvordan du finder ud hvor i linien at teksten starter kræver noget
> yderligere viden. Et punktum eller 2 mellemrum i træk eller lignende.


Jeg rodede nogle timer mere, og fandt frem til at jeg kunne sammenligne
de første 10 karakterer af den nye tekst, med den jeg i forvejen har i
min buffer, og er de ikke fundet, så må det være en ny linje, og
overskriver så derfor min buffer med den nye tekst.

Derefter søger jeg efter de 10 første tegn i den nye tekst, ( med
pos()), og sætter den nye tekst ind på den fundne plads, så vil dét
eller de tegn som ikke var i min buffer i forvejen, blive tilføjet.

Kom totalt til at fylde omkring 14 linjer.

Det kom til at virke, men er overbevist om at din udgave også gør, men
den kan så ikke tjekke på tekst-start.

Tak for svaret.

Mvh Hauge
Lignende emner