Avatar billede benne.dk Nybegynder
17. oktober 2001 - 15:19 Der er 33 kommentarer og
3 løsninger

At hente userlist

til delphi-nørderne:

Jeg har en chat i PHP - minder utrolig meget om OFiRs..
jeg vil lave et program man kan chatte fra på chatten.
Chatten er opbygget i sider:
chat = viser outputtet for chatten (er ordnet i programmet)
bund = hvis man kommer fra webben indtaster man sit input her

I bund er der også en userlist over dem på chatten - den ser f.eks. sådan ud:

kode...
<select name=touser>
<option value=-1>All Users
<option value=1>Test1
<option value=2>Test2
<option value=3>Test3
</select>
mere kode...

Jeg vil gerne have den liste ind i en ListBox - jeg har hentet sourcen fra bund ned i en string i programmet - men det er her problemerne melder sig...

Hvordan får jeg pillet alle brugerne ud af koden og får dem proppet ind i listbox\'en?
Avatar billede martinlind Nybegynder
17. oktober 2001 - 15:37 #1
Start med at hent det ind i en stringList, løb den liste igennem og check på om der står value i det element du er nået til, hvis der gør laver du en Copy() med brug af Lastdelimiter på >, det copy retunere tilføjer du til din listbox items

/Martin
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 15:43 #2
Jeg er ikke helt med...
Hvad skal jeg hente ind i en string-list? Og value?
Avatar billede ziron Nybegynder
17. oktober 2001 - 15:44 #3
jeg prøver lige at lave noget til dig :-)

/ZIRON
Avatar billede martinlind Nybegynder
17. oktober 2001 - 15:55 #4
Du skriver du har hentet source fra bund ind i en string, det skal du hente ind i en stringlist istedet, så kan du arb. med det line-vis, og så gøre som jeg beskrev, men lad nu bare ziron få lidt arb. ro *S*
Avatar billede ziron Nybegynder
17. oktober 2001 - 15:57 #5
martin >> tak tak, men det går helt glat så fuck det. hvorfor vil min Delete ikke virke.... arrrrrr

/ZIRON
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 15:57 #6
sidder også selv og prøver (uden held)
Avatar billede martinlind Nybegynder
17. oktober 2001 - 16:02 #7
Hvordan har du din source af bund ???
Avatar billede martinlind Nybegynder
17. oktober 2001 - 16:03 #8
ziron, hvad bruger du delete til ??
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:04 #9
Hvad mener du?
Jeg hentede f.eks. siden www.blabla.dk/bund.php?userid=u2364837278463sd ned i en streng

(???)
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:04 #10
martin >> jeg lavede det i en textbox, for hvis html\'koden ikke var lavet pænt ville det jo gå galt, men skod lort... laver lige noget med en stringlist...

/ZIRON
Avatar billede martinlind Nybegynder
17. oktober 2001 - 16:07 #11
Ja men du må have fået source ind på en eller anden måde, via en TWebBrover comp. også body property\'en ??
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:08 #12
Jeg bruger:

  HTTP := TNMHTTP.Create(nil);
  HTTP.Get (userlistURL);
  userlistURL := (HTTP.Body);
  HTTP.free;
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:11 #13
Taget frit ud af notepad med view source ser det sådan ud

<td>
<FONT SIZE=2 FACE=\"Verdena, Tahoma, arial\" color=#ffff00>
<b>Send til</b>:</font> <select name=touser>
<option value=-1>all users<option value=3>test2<option value=2>test
</select>
</td>
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:12 #14
Det kunne være fedt hvois den også kunne på en måde binde value\'en navnet
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:18 #15
dette burde kunne gøre det hvis der altså er linieskift mellem hver value:

ikke sådan:

<option value=-1>all users<option value=3>test2<option value=2>test

men sådan:

<option value=-1>all users
<option value=3>test2
<option value=2>test

/ZIRON
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:18 #16
hvad var det du ville binde???

/ZIRON
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:19 #17
hov her kommer det:

var
  liste : TStringList;
  linier, stedstart, stedstop : Integer;
begin
  liste := TStringList.Create;
  liste.Text := Memo1.Lines.Text;

  linier := 1;

  repeat
    if pos(\'<option value=\', liste.Strings[linier]) <> 0 then
      begin
        stedstart := pos(\'>\', liste.Strings[linier]) + 1;
        stedstop := length(liste.Strings[linier]) - stedstart + 1;
        ListBox1.Items.Add(copy(liste.Strings[linier], stedstart, stedstop));
        linier := linier + 1;
      end
    else
      begin
        linier := linier + 1;
    end;
  until
    linier = liste.Count;
end;

/ZIRON
Avatar billede martinlind Nybegynder
17. oktober 2001 - 16:22 #18
en lille optimering ville være dette :

ListBox1.Items.Add(copy(liste.Strings[linier], LastDelimiter(\'>\',liste.Strings[linier]),Length(liste.Strings[linier])));

Så slipper du for dine sted stop og start *S*

/Martin
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:23 #19
Binde på en måde, value i <options> til navnet...
Ved I, om jeg kan \"force\" linieskift i php?
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:25 #20
okay som herren siger, men det lille 1\'tal skal med:

var
  liste : TStringList;
  linier: Integer;
begin
  liste := TStringList.Create;
  liste.Text := Memo1.Lines.Text;

  linier := 1;

  repeat
    if pos(\'<option value=\', liste.Strings[linier]) <> 0 then
      begin
        ListBox1.Items.Add(copy(liste.Strings[linier], LastDelimiter(\'>\',liste.Strings[linier]) + 1,Length(liste.Strings[linier])));
        linier := linier + 1;
      end
    else
      begin
        linier := linier + 1;
    end;
  until
    linier = liste.Count;
end;

/ZIRON
Avatar billede martinlind Nybegynder
17. oktober 2001 - 16:26 #21
Ja, så lad gå da *GG*
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:27 #22
:-)
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:30 #23
til at binde kan du bruge \"AddObject\" og hvad er det du vil med linieskift???

/ZIRON
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:34 #24
user_id = mysql_result($result, $i,\"user_id\");
$user_name = mysql_result($result, $i,\"user_name\");
$users .= \"<option value=$user_id>$user_name\";
$i++;

Jeg skal have indsat så den laver linieskift mellem den adder brugerlisten i teksten
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:36 #25
<?php

phpuser_id = mysql_result($result, $i,\"user_id\");
$user_name = mysql_result($result, $i,\"user_name\");
$users = \"<option value=$user_id>$user_name\";

?>

<br>

<?php

$i++;

?>

/ZIRON
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:43 #26
$user_id = mysql_result($result, $i,\"user_id\");
$user_name = mysql_result($result, $i,\"user_name\");
$users .= \"<option value=$user_id>$user_name<br>\";
$i++;
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:43 #27
nej - ik alligevel
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:47 #28
hvad ik alligevel???

/ZIRON
Avatar billede benne.dk Nybegynder
17. oktober 2001 - 16:52 #29
Leger lige med det
Avatar billede ziron Nybegynder
17. oktober 2001 - 16:54 #30
k bare iorden :-)

/ZIRON
Avatar billede dkn Nybegynder
17. oktober 2001 - 18:13 #31
hmm ser ud som om at det sidste problem var linieskiftet mellem brugernavnene.
Så jeg kom lige på det her, det ser ud som om det virker fint, den skal så bare lige køres inden du prøver på at extracte navnene:

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.WordWrap := false;
memo1.text := StringReplace(memo1.Text, \'<option\', #13#10+\'<option\', [rfReplaceAll]);
end;
Avatar billede dkn Nybegynder
17. oktober 2001 - 18:33 #32
procedure TForm1.Button1Click(Sender: TObject);
var
  liste: TStringList;
  linier: Integer;
  Number: string;
  function Getnumber(str: string): string;
  var
    str1: string;
  begin
    str1 := str;
    Delete(str1, pos(\'<option value=\', str1), pos(\'<option value=\', str1) + 13);
    result := copy(str1, 1, pos(\'>\', str1) - 1);
  end;
begin
//Insert return
  memo1.WordWrap := false;
  memo1.text := StringReplace(memo1.Text, \'<option value=\', #13#10 + \'<option value=\', [rfReplaceAll]);

  liste := TStringList.Create;
  liste.Text := Memo1.Lines.Text;
  linier := 1;
  repeat
    if pos(\'<option value=\', liste.Strings[linier]) <> 0 then
    begin //Getnumber(liste.Strings[linier]) - Vil get the number of the input string
      ListBox1.Items.Add(Getnumber(liste.Strings[linier]) + \' - \' + copy(liste.Strings[linier], LastDelimiter(\'>\', liste.Strings[linier]) + 1, Length(liste.Strings[linier])));
      linier := linier + 1;
    end
    else
    begin
      linier := linier + 1;
    end;
  until
    linier = liste.Count;
end;

//Nu skulle alt jo virke
Avatar billede ziron Nybegynder
20. oktober 2001 - 13:18 #33
kan du få det til at funge???

/ZIRON
Avatar billede benne.dk Nybegynder
21. oktober 2001 - 15:41 #34
YuP :) Takker mange gange for jeres hjælp :) Points til alle...
Avatar billede martinlind Nybegynder
21. oktober 2001 - 16:00 #35
Takker *S*
Avatar billede ziron Nybegynder
21. oktober 2001 - 16:23 #36
det var da så lidt og takker for point :-)

/ZIRON
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester