Autor Téma: Doplneni textu mezi text stazeny z internetu v RichEditu  (Přečteno 4194 krát)

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Ahoj,
stahnu si z internetu (z meho serveru) soubor m3u do RichEditu a potreboval bych si za http:// vlozit muj definovany text a potom aby to pokracovalo dal

nyni text vypada takto:
Kód: Delphi [Vybrat]
  1. #EXTM3U
  2. #EXTINF:-1,Radio 1
  3. http://mujserver.cz/cislo_radia/10
  4. #EXTINF:-1,Radio 2
  5. http://mujserver.cz/cislo_radia/20
  6.  

a potreboval bych aby se ten text upravil na
Kód: Delphi [Vybrat]
  1. #EXTM3U
  2. #EXTINF:-1,Radio 1
  3. http://MUJDOPLNENYTEXT@mujserver.cz/cislo_radia/10
  4. #EXTINF:-1,Radio 2
  5. http://MUJDOPLNENYTEXT@mujserver.cz/cislo_radia/20
  6.  

99871

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #1 kdy: 19-05-2018, 16:37:18 »
Proc neupravis playlist rovnou na Tvem serveru? Moznosti samozrejme jsou... Pro Delphi 7 upgrade Indy a pouziti TIdURI, pripadne WinAPI InternetCrackUrl s naslednou modifikaci struktury komponent a vytvorenim nove URL pomoci InternetCreateUrl. Nebo po vidlacku povazovat URL za bezny retezec a pomoci Pos a dalsich textovych funkci do nej vlozit login s heslem (coz bych tipoval ze je cilem).
« Poslední změna: 19-05-2018, 16:45:14 od 99871 »

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #2 kdy: 19-05-2018, 17:11:04 »
ano presne to je cilem.... rekl bych ze pouziti POS bude to prave....


na sevreru to nechci primo upravovat.... proto si delam tu aplikaci, abych si to mohl upravovat az u me na PC...

PS: Tak hledam nejaky nakopnuti na to POS, ale nejak v tom tapu

PS 2 : Divam se i na to InternetCrackUrl, ale to bych urcil jen jeden radek, jak docilim abych to takto provedl na vsechny radky a mohl do kazdyho radku dosadit svuj text ???

Mohl by si mi prosim pomoct ?? uz si mi mnohokrat pomohl a jsem ti za to vdecen
« Poslední změna: 19-05-2018, 17:40:16 od Kony »

99873

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #3 kdy: 19-05-2018, 17:51:03 »
ano presne to je cilem.... rekl bych ze pouziti POS bude to prave....

Neni to to prave. Spravne by bylo mit nejaky M3U parser, spolu s URL parsery ktere jsem zminil, ale volba je na Tobe ;) Tady je ukazka s vyuzitim funkci Pos a Insert. Funkcni je, ale urcite neni mnou doporucene!:

Kód: Delphi [Vybrat]
  1. const
  2.   Protocol = 'http://';
  3.  
  4. function IsURL(const Text: string): Boolean;
  5. begin
  6.   Result := Pos(Protocol, Text) = 1; // pokud je na zacatku textu retezec "http://", povazujeme text za URL (coz zdaleka neni pravda)
  7. end;
  8.  
  9. function TryAppendLogin(var URL: string; const UserName, Password: string): Boolean;
  10. begin
  11.   Result := IsURL(URL); // zjistime zda je retezec URL
  12.   if Result then // pokud ano, pak...
  13.     Insert(UserName + ':' + Password + '@', URL, Length(Protocol) + 1); // vlozime jmeno a heslo na pozici za protokol
  14. end;
  15.  
  16. procedure TForm93.Button1Click(Sender: TObject);
  17. var
  18.   S: string;
  19.   I: Integer;
  20. begin
  21.   RichEdit1.Lines.BeginUpdate;
  22.   try
  23.     for I := 0 to RichEdit1.Lines.Count - 1 do
  24.     begin
  25.       S := RichEdit1.Lines[I];
  26.       if TryAppendLogin(S, 'login', 'password') then
  27.         RichEdit1.Lines[I] := S;
  28.     end;
  29.   finally
  30.     RichEdit1.Lines.EndUpdate;
  31.   end;
  32. end;

Netestoval jsem v Delphi 7, jen doufam ze by melo fungovat i tam. Spravna cesta by byla pouziti TIdURI (jenz ma platformne nezavisly parser), pripadne pro Windows WinAPI ktere jsem zminoval.

Docileni toho aby radky obsahujici URL zdroje M3U playlistu by vyzadovaly M3U parser. Vyse uvedene reseni nahradi vsechny radky zacinajici protokolem http:// (coz neni uplne v poradku). Prvne bych se pokusil napsat si vlasntni M3U parser. Ten format je trivialni.
« Poslední změna: 19-05-2018, 18:01:42 od 99873 »

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #4 kdy: 19-05-2018, 17:58:25 »
AUUUUUU tak to je narez.... jsi neskutecnej

vysledek :
Kód: Delphi [Vybrat]
  1. #EXTM3U
  2. #EXTINF:-1,Radio 1
  3. http://login:password@mujserver.cz/cislo_radia/10
  4.  
  5. #EXTINF:-1,Radio 2
  6. http://login:password@mujserver.cz/cislo_radia/20

jen tam rve mezeru za kazdej ten radek. to je spravne ???

PS : a jeste se divam.... funguje to dobre, ale po nekolika radcich to proste prestane doplnovat....
« Poslední změna: 19-05-2018, 18:00:59 od Kony »

99875

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #5 kdy: 19-05-2018, 18:02:48 »
Nemas zapnuty WordWrap v tom rich editu? Jinak obecne, data bys mel uchovavat mimo vizualni komponenty. Cili stahnout ze serveru do instance string list, upravit hodnoty tam, a az po uprave predat vizualni komponente.
« Poslední změna: 19-05-2018, 18:09:47 od 99875 »

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #6 kdy: 19-05-2018, 18:11:58 »
WordWrap jsem tedka dal na false a je to to samy...

a jak si to myslel tim upravou jinde ??? nacetl sjem prace ten m3u do toho RichEditu a potom tam upravil, nevim jak jinak na to

PS: Ty mezery by ani nevadily, ale to ze to po nejake dobe prestane dosazovat.... je to ruzny.. jednou po cca 50 radcich po druhy treba po 20ti
« Poslední změna: 19-05-2018, 18:17:13 od Kony »

99877

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #7 kdy: 19-05-2018, 18:18:27 »
WordWrap jsem tedka dal na false a je to to samy...

a jak si to myslel tim upravou jinde ??? nacetl sjem prace ten m3u do toho RichEditu a potom tam upravil, nevim jak jinak na to

No kvuli tomu lamani radku jsem mel na mysli nacist data ze serveru do instance (i docasne) TStringList, ten projit, a az pote ten upraveny string list predat rich edit.

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #8 kdy: 19-05-2018, 18:19:59 »
aha, tak to bohuzel nevim jak udelat. vzdycky jsem to delal bud pres memo nebo RichEdit

stahuju ten soubor do promenne pomoci

Kód: Delphi [Vybrat]
  1. DownloadURL_NOCache('http://mujserver/zakladni_radia/zakladni.m3u', zakladni);

a pak vlozim do RichEditu

Kód: Delphi [Vybrat]
  1. RichEdit1.Lines.Add (zakladni);

99879

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #9 kdy: 19-05-2018, 18:25:29 »
Snad neco ve smyslu (zpracovat odpoved serveru predtim nez ji predas vizualni komponente [jez muze ovlivnit iteraci radku jejich zalamovanim]):

Kód: Delphi [Vybrat]
  1. var
  2.   S: string;
  3.   I: Integer;
  4.   Response: TStrings;
  5. begin
  6.   Response := TStringList.Create;
  7.   try
  8.     DownloadURL_NOCache('http://mujserver/zakladni_radia/zakladni.m3u', Response);
  9.     for I := 0 to Response.Count - 1 do
  10.     begin
  11.       S := Response[I];
  12.       if TryAppendLogin(S, 'login', 'password') then
  13.         Response[I] := S;
  14.     end;
  15.     RichEdit1.Lines.Assign(Response);
  16.   finally
  17.     Response.Free;
  18.   end;
  19. end;
« Poslední změna: 19-05-2018, 18:29:15 od 99879 »

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #10 kdy: 19-05-2018, 18:34:08 »
Tak to by melo byt ono....

ale jeste jedna vec....

mam na formu CheckBoxy, ktery me urcuji ktery vsechny playlisty se maji stahnout a upravit....
mam :
Kód: Delphi [Vybrat]
  1. if DBCheckBox9.Checked then
  2.     begin
  3.         RichEdit1.Lines.Add (zakladni);
  4.     end;
  5.   if DBCheckBox4.Checked then
  6.     begin
  7.         RichEdit1.Lines.Add (TOP);
  8.     end;

atd......

misto toho dam ten tvuj priklad, ale kdyz vyberu obadva tak se vypise vzdy pouze jeden....


PS2 : tak jak si to tedka upravil tak to uz nejde.... a ja vymazal ten priklad co si mel pred tim......

ted to pise :
a vysi to za zavorkou za response u toho radku jak se stahuje ten m3u response
Kód: Delphi [Vybrat]
  1. [Error] hlavni.pas(199): Types of actual and formal var parameters must be identical
  2. [Error] hlavni.pas(216): Types of actual and formal var parameters must be identical
  3. [Fatal Error] KonaroTV.dpr(5): Could not compile used unit 'hlavni.pas'




PS: Tak uz to bezi jak ma.. jeste jednou mockrat dekuji
« Poslední změna: 19-05-2018, 18:56:19 od Kony »

99881

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #11 kdy: 19-05-2018, 18:58:51 »
Z meho pohledu nemuzu poradit vic. Ano, text v me ukazce nepridava ale nahrazuje diky metode Assign. Pokud bys chtel do rich edit text jen pridavat, pouzij namisto ni metodu AddStrings. Cili radek z me ukazky:

Kód: Delphi [Vybrat]
  1. RichEdit1.Lines.Assign(Response);

bys nahradil za:

Kód: Delphi [Vybrat]
  1. RichEdit1.Lines.AddStrings(Response);

Nevedel jsem o kontextu vyuziti vic nez vis Ty sam :)

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #12 kdy: 19-05-2018, 19:04:44 »
diky moc, to jsem presne udelal a uz to slape jak hodinky.....

99883

  • Host
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #13 kdy: 19-05-2018, 19:10:50 »
diky moc, to jsem presne udelal a uz to slape jak hodinky.....

Neni zac! ;) Nicmene korektni reseni by bylo mit parser pro M3U soubory, ktery by rozlamal jednotlive polozky na nazvy a zdroje a pote bys mohl z takovychto polozek pridat ve zdroji (pokud by byl URL adresou) jmeno uzivatele a heslo. To by vyzadovalo napsat M3U parser a v nem pak pouzit vyse zminene reseni (tj. napr. TIdURI pripadne InternetCrackUrl a InternetCreateUrl na Windows platforme).

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu mezi text stazeny z internetu v RichEditu
« Odpověď #14 kdy: 20-05-2018, 14:47:41 »
jeste se divam, ze to spatne cte diakritiku... v m3u souboru ji mam spravne alůe do RichEditu to nacte spatne

Č to nacte jako ÄŚ

PS:: Ale co me vic zarazi, tak potrebuji cely RichEdit ulozit do souboru

poomoci RichEdit.SavetoFile('test.m3u') mi to pred kazdy radek dopise nejaky nesmysli
« Poslední změna: 20-05-2018, 15:17:42 od Kony »