powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TStringList что то начал терять функционал
25 сообщений из 46, страница 1 из 2
TStringList что то начал терять функционал
    #39635856
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Непонятное со списком :

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
if OpenDialog.Execute then
  begin
    FilePath:=OpenDialog.FileName;
  end;

...

Lst:=TStringList.Create;
    try
       { AssignFile(FileStr,FileName);
        Reset(FileStr);
        while not Eof(FileStr) do
        begin
          ReadLn(FileStr,TextStr);   
          Lst.Add(TextStr);
        end;
        CloseFile(FileStr); }

        Lst.LoadFromFile(FilePath);

        ShowMessage(Lst.Text);
    finally
      FreeAndNil(Lst);
    end;


в обоих случаях при Lst.Add() выскакивает исключение(ведущее в никуда SysUtils) при загрузке очередной строки из файла(текст)
но если открыть новый проект и там все это прописать то все работает (ХЕ3)

Вопрос: что такое и где может слететь с катушек в проекте чтобы выскочил такой косячок?
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39635870
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первые байты в файле не FFFE ?
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39635878
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
Память где-то испорчена.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636172
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairвыскакивает исключение(ведущее в никуда SysUtils)

Какое точно исключение и куда точно ведёт? Как определили, что на Lst.Add? Как стоит опция I/O Errors? Телепатов тут нет.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636219
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополнительно(информация к размышлению) :
если Memo1.Text:=Lst.Text; тогда косяка нет
если ShowMessage(Lst.Text); тогда косяк есть но только на некоторых файлах

Какое точно исключение и куда точно ведёт? Как определили, что на Lst.Add? Как стоит опция I/O Errors? Телепатов тут нет.


First chance exception at $000014BC. Exception class $C0000005 with message 'access violation at 0x000014bc: read of address 0x000014bc'. Process Func2.exe (1108)

это предположительно, строк в файле много и исключение выскакивает всякий раз на кнопочке ПРОДОЛЖИТЬ, а если нажать БРИК тогда
sysutuls.pas
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
begin
  ErrorCode := Byte(MapException(P));
  case ErrorCode of
    3..10, 12..21:
      E := ExceptTypes[ExceptMap[ErrorCode].EClass].Create(ExceptMap[ErrorCode].EIdent);
    11: E := CreateAVObject;
  else
    E := EExternalException.CreateFmt(SExternalException, [P.ExceptionCode]);
  end;
  if E is EExternal then EExternal(E).ExceptionRecord := P;
  E.RaisingException(P);
{$IFDEF AUTOREFCOUNT}
  E.__ObjAddRef;
{$ENDIF}
  Result := IntPtr(E);
end;



насчет входы-выхода ошибок пока не в курсе где это

и да, жаль что телепатов нет.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636226
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
11: E := CreateAVObject;
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636232
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairFirst chance exception at $000014BC. Exception class $C0000005 with message 'access
violation at 0x000014bc: read of address 0x000014bc'.

Где-то ты портишь память. Включай полный отладочный режим менеджера памяти и отлаживайся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636239
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

У тебя программа большая? Может ты ее сюда под спойлер выложишь?
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636283
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

дополнительные потоки может есть? или в основном всё? попробуй включить отладочную информацию по максимуму - то есть обнаружение границ и переполнения.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636314
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Больше похоже на повреждение стека. Я бы проверил все нетипизированные переменные/параметры и буфера. Вон там код с file - его в первую очередь смотреть. Для быстрой проверки можно все локальные переменные сделать глобальными.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636316
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairэто предположительно, строк в файле много и исключение выскакивает всякий раз на кнопочке ПРОДОЛЖИТЬ, а если нажать БРИК тогда

А Call Stack что показывает?

Pcrepairнасчет входы-выхода ошибок пока не в курсе где это

https://www.gunsmoker.ru/2011/10/pascal.html#errors

Впрочем, уже, наверное, не актуально (раз возбуждается Access Violation, а не I/O Error).
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636369
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А Call Stack что показывает?
тут картинка
потоков нет, программа вся : МЕМО + Баттон
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636375
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, на скриншоте - минимум четыре исключения. А где уведомления отладчика о первых трёх исключениях?

По факту получается, что возникает исключение (предположительно - A/V), RTL Delphi пытается создать для него объект EAccessViolation и - обламывается. Возникает второе исключение, RTL Delphi пытается создать для него объект EAccessViolation и - снова обламывается. Возникает третье исключение, RTL Delphi пытается создать для него объект EAccessViolation - и обламывается в очередной раз. Но в этот раз мы встали в отладчике.

Серьёзный кирдык чему-то в программе.

Я бы включил опцию "Use Debug DCUs", сделал полный Build (не Compile), поставил бряк на GetExceptionObject из SysUtils и прошёл бы её по шагам.

Сообщение "access violation at 0x000014bc: read of address 0x000014bc" говорит о том, что управление ушло по мусорному указателю. Буквально:
Код: pascal
1.
2.
Proc := Pointer($14bc);
Proc; // - вылетаем тут


Пока не видно, как такое может быть при простом повреждении данных в GetExceptionObject.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636376
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairпотоков нет, программа вся : МЕМО + Баттон

Выложи.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636381
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и все таки если в коде есть ShowMessage(VAR); тогда вся эта бодяга начинается. стоит убрать вывод в ShowMessage списка с большим числом строк (1500 допустим, чиста для убедится что ПЕРЕМ не пустая)

ShowMessage оно Vcl.Dialogs, там же и TOpenDialog который есть на форме.
конечно это простой подход к пониманию проблемы, но вот это
авторЯ бы включил опцию "Use Debug DCUs", сделал полный Build (не Compile), поставил бряк на GetExceptionObject из SysUtils и прошёл бы её по шагам.

такое углубление пока нежелательно
программа крайне проста и ранее всегда все работало
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
unit uMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
  IniFiles;

type
  TMain = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    OpenDialog: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Main: TMain;

implementation
{$R *.dfm}
Uses uFunc;

procedure TMain.Button1Click(Sender: TObject);
var
  FilePath:string;
  Lst:TStringList;
begin
  if OpenDialog.Execute then
  begin
    FilePath:=OpenDialog.FileName;  //ShowMessage(FilePath);  // тут тоже никаких проблем
  end;

  //Memo1.Lines.LoadFromFile(FilePath);  // все прекрасно

  Lst:=TStringList.Create;
  try
    Lst.LoadFromFile(FilePath);
    //Memo1.Text:=Lst.Text;   //тут все атлично работает
    FilePath:=Lst.Text;           // ну тут на всякий случай, если без доп. ПЕРЕМ все то же
    ShowMessage(FilePath);    //а вот тут непонятное
  finally
    FreeAndNil(Lst);
  end;
end;


initialization
  ReportMemoryLeaksOnShutdown := True;
end.


какая то ерунда, давненько таких тупых проблем не было
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636384
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair, в показаниях путаешься. То у тебя Lst.Add, то ShowMessage.

uFunc и IniFiles - это что? ShowMessage там переопределяется или нет?

P.S. Как бы понятно, что многие мегабайты текста в ShowMessage передавать - это не самая разумная идея, но указанного поведения только от этого быть не должно.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636386
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем если текстовый файл небольшой (300 строк) то без проблем, а если к примеру 1500 строк то уже сбой
может так и должно быть и ShowMessage просто не может вместить много строк? никто не в курсе?
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636387
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uFunc и IniFiles - это что? ShowMessage там переопределяется или нет?

uFunc - просто ссылка на пустой модуль для функций и процедур
IniFiles - это кусочек для записи в ИНИ-файл, ну вот убрал из юзеров и ничего не поменялось

Pcrepair, в показаниях путаешься. То у тебя Lst.Add, то ShowMessage.
список похоже не причем. все косяки при попытке вывести в ShowMessage достаточно большой текст(большое число строк)
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636394
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairно если открыть новый проект и там все это прописать то все работает (ХЕ3)

Манифест проверь ("Use runtime themes").
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636398
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в runtime theme стоит Enable RunTime Theme

мда... удалил тему Смоки Кварц Камри и дефект пропал. но мне нужна какая то тема получше чем дефолтная ВЫНь

и что тут делать?
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636405
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может что-то в самих файлах. Я, правда, не представляю из-за чего ShowMessage может так глючить, но мало ли.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636407
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairв общем если текстовый файл небольшой (300 строк) то без проблем, а если к примеру 1500 строк то уже сбой
может так и должно быть и ShowMessage просто не может вместить много строк? никто не в курсе?
Загоняю по полмиллиона, ничего не падает.
У тебя какой-то кусок кода память портит.
Напиши тестовую процедуру и вызывай по порядку работы.
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636409
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще раз, отдельное спасибо GunSmoker
//-------------------
в runtime theme стоит Enable RunTime Theme
мда... удалил тему Смоки Кварц Камри и дефект пропал. но мне нужна какая то тема получше чем дефолтная ВЫНь
и что тут делать?
//------------------
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636415
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

Pcrepair,

темы? бывает, поглюкивают. так жестко то не видел. смотри вот это:

https://github.com/RRUZ/vcl-styles-utils

может поможет
...
Рейтинг: 0 / 0
TStringList что то начал терять функционал
    #39636439
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
У меня тоже была проблема с темами, оказалось, что я писал за границы массива, в итоге страдали темы.
Скорее проблема не в этом, а где-то не корректно пишется в память.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TStringList что то начал терять функционал
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]