Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - GoDleSS

Страницы: [1]
1
Цитировать
GoDleSS, если ты не можешь пять строчек скопировать, здесь тебе не помогут. Посмотри, что тебе написал Chs и что написал ты. Все работает правильно.

Поверь мне, что 5 строчек я скопировать могу(да и сам написать значительно больше 5 строк), кому сильно интересно могу даже немного недописанного бота для довольной известной игры БК(http://www.combats.ru) подкинуть...
А тем не менее у меня глючит с вашими предложениями чат, хотя отдельно само предложение работает нормально, ладно, спасибо всем - пойду копаться, может и получиться.

2
Цитировать
А ты попробуй сообщения в файл не дописывать, а ципать их сначала в массив, потом добавляй в начало массива новое сообщение и переписывай весь файл. Мессаги будут храниться в файле (и в считанном оттуда массиве) в нужном тебе порядке. Ты их скока захочешь - столько покажешь. Если не хранить в этом файле очень много сообщений, то могет получиться.

Дело в том, что я так уже пробовал - все работает, но при этом новые сообщения чата будут появляться наверху, а н снизу, что мне не надо, а вот если сделать так, но чтоб снизу, то только с бесконечным массивом у меня работает все правильно(представь сколько чат будет грузиться через полчаса разговора!), а с заданым глючит.

3
Набираем:
#!/usr/bin/perl

@a = (\'1\',\'2\',\'3\');


foreach $i (reverse(1..2))
{ print $a[-$i];
}
print header;
print @a;

Получаем:

23123
По-моему , не то что нужно ....

4
Готовый комерческий говоришь?! Да, я брал готовый простейший чат когда-то давно, когда начал изучать Перл, но если посмотришь, то в нем уже и трети нет от того, что было в начале, т.е. постепенно я его почти полностью изменил под себя, но так как учился на нем, то и стиль этот приобрел... Так что не строй из себя крутого программера, все знающего, не заметно, а раз я сказал: не работает, значит не работает у меня - пробовал...

5
Опробовал ваши предложения - 0 результата, давайте я выложу весь исходник(только пожалуйста без распространения), я уже неделю просто над этой пробемой бьюсь, а все никак :(
В общем надо чтобы сообщения в чате нормально добавлялись, но чтоб при этом новая мессага не перетерала последний элемент массива, как это получается у меня...
[CODE]
#!/usr/bin/perl
#################################
#Scripted by CheRt[aka_GoDleSS] #
#©2003            #
#################################
$filepath=\'/inetpub/wwwroot/cgi-bin/mch/\';
$filext=\'mes.html\';
$clearfile=\'clear.pl\';
#--------------localtime
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$time1=$hour;
$time2=$min;
$time3=$sec;
if ($time1<10) {
$time1="0$time1";
}
if ($time2<10) {
$time2="0$time2";
}
if ($time3<10) {
$time3="0$time3";
}
#-----------------------
print "Content-type: text/html\\nPragma: no-cache\\n\\n";
print "";
print "\\n";
&getform;
if (&getoldfile) {
   &printform;
   &wfile;
   }
else
{
   print "Скрипт работает нестабильно, сообщи администрации
\\n";
}
print "\\n";
exit(0);
sub getform {
   $buffer = "";
   read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});
   @pairs=split(/&/,$buffer);
   foreach $pair (@pairs)
   {
      @a = split(/=/,$pair);
      $name=$a[0];
      $value=$a[1];
      $value =~ s/\\+/ /g;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $value =~ s/~!/ ~!/g;
      $value =~ s/\\      $value =~ s/\\>/\\>\\;/g;
      $value =~ s/[\\r\\n]//g;
      push (@data,$name);
      push (@data,$value);
   }
   %form=@data;
   %form;
}
sub getoldfile {
   $form{\'room\'} =~ s/\\W//g;
   return 0 unless open(DATAFILE, "$filepath$form{\'room\'}$filext");
   @filesource=;
   close(DATAFILE);
   return 1;
}
sub printform {
   if ($form{\'logoff\'} eq \'1\') {
      print << "EOF";


EOF
   } else {
      print << "EOF";
      










Сообщение:



















"Очистить
"Смайлики"




EOF
   }
}
sub wfile {
   $color = "$form{\'color\'}";
   $newmessage = "\\ \\;($time1:$time2:$time3)$form{\'uname\'}: $form{\'mes\'}
\\n";
   open (DATAFILE, ">$filepath$form{\'room\'}$filext");
   print DATAFILE "\\n";
   for ($i = 1; $i < 50; $i++) {
      print DATAFILE $filesource[$i];
   }
   print DATAFILE $newmessage;
      close DATAFILE;
}

6
Как говорится, люди добрые помогите тупому недопрограммисту =)
В общем проблема такая:
Имеется файл, откуда считываются данные в массив(что-то вроде @filesource=;) и куда вписываются новые строки(через цикл все строки массива, в который записали старые данные+новая строка). Так вот как бы сделать так, чтобы был вывод последних скажем 50 эллементов массива(т.е. еще и убрать ненужные вначале), а не первых, как это получается в таком примерно виде:
Считываем:

open(DATAFILE, "datafile1");
@filesource=;
close(DATAFILE);

Записываем:

open (DATAFILE, ">datafile1");
print DATAFILE "\\n";
for ($i = 1; $i < 50; $i++) {
print DATAFILE "$filesource[$i]";
}
print DATAFILE $new;
close DATAFILE;

Кто не понял, это кусочек простенького чата...

Страницы: [1]