Неправильная работа со строками, а именно - в методах Read и Write. 1. Чтение и запись строк производить нужно, начиная с первого символа, т.е. не str а str[1]. 2. При New(p) инициируется пустая строка. Как вы пишете в нее, не установив длину - непонятно (хоть длину строки сохраняете, уже очень хорошо). Правильно так: в LoadFromFile вместо Read(Name, L);
| Код | SetLength(name, l); if l<>0 then Read(name[1], l);
|
В SaveToFile вместо Write(Name, L);
| Код | if l<>0 then Write(Name[1], l);
|
Добавлено через 3 минуты и 2 секунды И будет вам счастье невыразимое в работе со строками.
Цитата(Лапоть @ 25.4.2009, 18:32 ) | | Строки в структурах хороши, пока не надо писать/читать в/из файл(а) |
Они также хороши и при записи/чтении в/из файла. Просто нужно уметь их готовить.
Добавлено через 10 минут и 34 секунды JS2, еще одно замечание/предложение: не используйте With без крайней необходимости. причина простая: если бы этот код находился в классе TForm1 (к примеру), то возможно возникновение неявной ошибки: поле Name есть и у TForm1, и что из них (св-во TForm или поле TItemA) пойдет на чтение/запись - это нужно долго и упорно читать документацию или шагать отладчиком (который, кстати, тоже не очень жалует всплывающими подсказками with). |