Autor Téma: Doplneni textu do nekolika radku zacinajici pouze http  (Přečteno 325 krát)

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 307
  • Karma: 1
    • Verze Delphi: Delphi 7
Ahoj, snažím se rozchodit jednu vec....
Mam seznam m3u (již jsme tady resili)
Kód: Delphi [Vybrat]
  1. #EXTM3U
  2. #EXTINF:-1 tvg-chno="1",Radio1
  3. http://xxxxxxxx/radia/mojedoma12?auth=&profile=LQ
  4. #EXTINF:-1 tvg-chno="2",Radio2
  5. http://xxxxxxxx/radia/mojedoma333?auth=&profile=LQ
  6. #EXTINF:-1 tvg-chno="3",Radio3
  7. http://xxxxxxxx/radia/mojedoma98754?auth=&profile=LQ
A potřeboval bych, aby za "auth=" se pridal text z Edit2.text.
Zkousim to jiz nejakou dobu a porad na to nemuzu prijit

pomocí :
Kód: Delphi [Vybrat]
  1. const
  2. Protocol = 'http://';
  3.  
  4. function TryAppendLogin(var URL: string; const Token: string): Boolean;
  5. begin
  6.   Result := IsURL(URL); // zjistime zda je retezec URL
  7.   if Result then // pokud ano, pak...
  8.     Insert(Token, URL, Length(Protocol) + 54); // vlozime jmeno a heslo na pozici za protokol
  9. end;
  10.  
  11. procedure TForm2.Button3Click(Sender: TObject);
  12. var
  13.     S: string;
  14.     I: Integer;
  15. begin
  16.     begin
  17.         ZTable1.Edit;
  18.         DBEdit7.Text := 'http://presmeruj.cekuj.net/user/'+DBEdit2.Text+'.m3u';
  19.         ZTable1.Post;
  20.     end;
  21.       Memo2.Clear;
  22.     begin
  23.       Response1 := TStringList.Create;
  24.       try
  25.         Response1.Text := IdHTTP1.Get('http://xcxcxcxcxc/radia.m3u');
  26.         for I := 0 to Response1.Count - 1 do
  27.         begin
  28.           S := Response1[I];
  29.           if TryAppendLogin(S, Edit2.Text) then
  30.             Response1[I] := S;
  31.         end;
  32.         Memo2.Lines.AddStrings(Response1);
  33.             finally
  34.         Response1.Free;
  35.       end;
  36.     end;
  37. end;
Dokážu doplnit ten Token na pozici 54, ale ty radky se meni.. tzn jednou potrebuji token dan na pozici 54 a nekdy na 52 atd... takze bych potreboval to dat za "auth=", ale porad na to nemuzu prijit

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1169
  • Karma: 51
    • Verze Delphi: 10.3
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #1 kdy: 02-03-2021, 17:44:29 »
Musíš spočítat tu pozici - pomůže Ti funkce Pos, která najde "auth=" a vrátí pozici, na které začíná. Vkládat budeš samozřejmě "o kousek dál", abys to vložil až za rovnítko a ne před "auth=".

http://docwiki.embarcadero.com/Libraries/Sydney/en/System.Pos

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 307
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #2 kdy: 02-03-2021, 17:45:45 »
Díky za odpoved... taky jsem zkousel, ale porad to nedokazu dat nejak dokupy aby to vzdy vlozilo az za "auth=" kdyz se mi to podari nasmerovat na spravnou pozici, tak pak se zmeni pozice a jsem zase v pasti :)

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1169
  • Karma: 51
    • Verze Delphi: 10.3
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #3 kdy: 02-03-2021, 17:48:39 »
No potřebuješ něco jako
Kód: Delphi [Vybrat]
  1. PoziceProVlozeni := Pos('auth=', PuvodniUrl) + 5;

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 307
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #4 kdy: 02-03-2021, 17:51:20 »
ano to jsem jsem nejak pochopil, ale nemuzu prijit na syntaxe jak to ma byt cele....
Vzdy narazim na chybu a nebo ze mi to vubec nezapise

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1169
  • Karma: 51
    • Verze Delphi: 10.3
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #5 kdy: 02-03-2021, 17:55:23 »
Něco jako:

Kód: Delphi [Vybrat]
  1. Url := 'http://xxxxxxxx/radia/mojedoma12?auth=&profile=LQ';
  2. PoziceProVlozeni := Pos('auth=', Url) + 5;
  3. Insert('jmeno', Url, PoziceProVlozeni);


Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 307
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #6 kdy: 02-03-2021, 18:10:36 »
super, dekuji moc.... uz mi to asi funguje

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1038
  • Karma: 29
    • Verze Delphi: XE8, Seattle
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #7 kdy: 02-03-2021, 18:43:56 »
lepší je možná

Kód: Delphi [Vybrat]
  1. const cc = 'auth=';
  2. ..
  3. PoziceProVlozeni := Pos(cc, Url) + Length(cc);
  4.  

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 307
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #8 kdy: 02-03-2021, 18:59:02 »
Diky moc klici..

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 308
  • Karma: 12
    • Verze Delphi: D5, XE2, 10.4
Re:Doplneni textu do nekolika radku zacinajici pouze http
« Odpověď #9 kdy: 04-03-2021, 00:36:26 »
Další možnost:

Kód: Delphi [Vybrat]
  1. function TryAppendLogin(var URL: string; const Token: string): Boolean;
  2. begin
  3.   Result := IsURL(URL); // zjistime zda je retezec URL
  4.   if Result then // pokud ano, pak...
  5.     StringReplace(URL, 'auth=', 'auth=' + Token, []); // vlozime jmeno a heslo na pozici za protokol
  6. end;
  7.  
nil