Примечание: смещение неинициализированной строки: 4414 в C:

Я создаю программу, которая позволит пользователям загружать файлы, которые они написали в текстовых редакторах или что-то вроде Microsoft Office, а не просто копировать и вставлять их. Файлы, которые они должны загрузить, в основном имеют форму .rtf. Эта программа сделана с использованием php, я не очень продвинутый php-программист, поэтому я взял преобразователь rtf в HTML-файл от любителя PHP-программиста с открытым исходным кодом, он отлично работает, файл конвертируется и отображается, но сопровождается этим обратите внимание вместе с предупреждением: «Предупреждение: array_push () ожидает, что параметр 1 будет массивом, а ноль задан в C:», я знаю, что могу использовать тег массива с переменной, которая не является массивом, но я попытался проверить это и есть массив, так что кто-нибудь может мне помочь с этим.

код для этого очень длинный, вот он:

class RtfElement
{
protected function Indent($level)
{
for($i = 0; $i < $level * 2; $i++) echo "&nbsp;";
}
}

class RtfGroup extends RtfElement
{
public $parent;
public $children;
public function __construct()
{
$this->parent = null;
$this->children = array();
}

public function GetType()
{
// No children?
if(sizeof($this->children) == 0) return null;
// First child not a control word?
$child = $this->children[0];
if(get_class($child) != "RtfControlWord") return null;
return $child->word;
}

public function IsDestination()
{
// No children?
if(sizeof($this->children) == 0) return null;
// First child not a control symbol?
$child = $this->children[0];
if(get_class($child) != "RtfControlSymbol") return null;
return $child->symbol == '*';
}

public function dump($level = 0)
{
echo "<div>";
$this->Indent($level);
echo "{";
echo "</div>";

foreach($this->children as $child)
{
if(get_class($child) == "RtfGroup")
{
if ($child->GetType() == "fonttbl") continue;
if ($child->GetType() == "colortbl") continue;
if ($child->GetType() == "stylesheet") continue;
if ($child->GetType() == "info") continue;
// Skip any pictures:
if (substr($child->GetType(), 0, 4) == "pict") continue;
if ($child->IsDestination()) continue;
}
$child->dump($level + 2);
}

echo "<div>";
$this->Indent($level);
echo "}";
echo "</div>";
}
}

class RtfControlWord extends RtfElement
{
public $word;
public $parameter;

public function dump($level)
{
echo "<div style='color:green'>";
$this->Indent($level);
echo "WORD {$this->word} ({$this->parameter})";
echo "</div>";
}
}

class RtfControlSymbol extends RtfElement
{
public $symbol;
public $parameter = 0;

public function dump($level)
{
echo "<div style='color:blue'>";
$this->Indent($level);
echo "SYMBOL {$this->symbol} ({$this->parameter})";
echo "</div>";
}
}

class RtfText extends RtfElement
{
public $text;

public function dump($level)
{
echo "<div style='color:red'>";
$this->Indent($level);
echo "TEXT {$this->text}";
echo "</div>";
}
}

class RtfReader
{
public $root = null;

protected function GetChar()
{
$this->char = $this->rtf[$this->pos++];
}

protected function ParseStartGroup()
{
// Store state of document on stack.
$group = new RtfGroup();
if($this->group != null) $group->parent = $this->group;
if($this->root == null)
{
$this->group = $group;
$this->root = $group;
}
else
{
array_push($this->group->children, $group);
$this->group = $group;
}
}

//and the line 140 is inside this function:
protected function GetChar()
{
$this->char = $this->rtf[$this->pos++];
}
}

Я написал здесь не весь код, потому что он слишком длинный, но это от первой строки 2 до строки 140.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector