Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.19;
Скачать: CL | DM;

Вниз

проблема перевода DOS-Win кодировки   Найти похожие ветки 

 
R.O.O.T ©   (2007-07-27 16:12) [0]

вот код
str2:=TStringList.Create;
str3:=TStringList.Create;
for I := 0 to Memo1.Lines.Count - 1 do
 str2.Add(Memo1.Lines.Strings[i]);

for i := 0 to str2.Count-1 do
begin
 Src:=PChar(str2.Strings[i]);
 OemToChar(Src, Str);
 str3.Add(StrPas(Str));
end;

for I := 0 to str3.Count - 1 do
Memo1.Lines.Add(str3.Strings[i]);
 
str2.Free;
str3.Free;

исполняется без ошибок
после выхода из процедуры появляется ошибка
Access violation at address 2020208D. Read of address 2020208D

в процессие отладки код выпаолняется без ошибок
по выходу из процедуры (end) ошибка появляется что может быть?


 
umbra ©   (2007-07-27 16:14) [1]

в стринглисте есть пустые строки.


 
clickmaker ©   (2007-07-27 16:20) [2]


> OemToChar(Src, Str);

а что такое Str?


 
r.o.o.t ©   (2007-07-27 16:24) [3]

Src, Str :PChar;
 str1     :String;
 str2     :TStringList;
 str3     :TStringList;
  i       :integer;


 
r.o.o.t ©   (2007-07-27 16:25) [4]

возможно есть
но ошибка наступает и без использование StringList
я думаю что то в функции OemToChar


 
umbra ©   (2007-07-27 16:27) [5]

а как Str инициализируется?


 
clickmaker ©   (2007-07-27 16:28) [6]


> [3] r.o.o.t ©   (27.07.07 16:24)
> Src, Str :PChar;

и где выделение памяти под Str?

к тому же Str - зарезервированное слово, compiler-magic. Не рекомендуется такие слова юзать, чтоб не ухудшать читаемость кода


 
r.o.o.t ©   (2007-07-27 16:30) [7]

str изменил на str00
как выделить память?


 
clickmaker ©   (2007-07-27 16:33) [8]


> [7] r.o.o.t ©   (27.07.07 16:30)

GetMem, AllocMem например
или заменить тип на string, SetLength, а потом PChar()


 
r.o.o.t ©   (2007-07-27 16:38) [9]

непомагает


 
umbra ©   (2007-07-27 16:39) [10]

а зачем вообще два стринглиста создавать?

str2 := TStringList.Create;
str2.AddStrings(Memo1.Lines);
for i := 0 to str2.Count-1 do
 if str2[i] <> "" then
  Memo1.Lines.Add(OemToChar(PChar(str2[i], PChar(str2[i])))
 else
  Memo1.Lines.Add("");

str2.Free;


 
r.o.o.t ©   (2007-07-27 16:46) [11]

все спасб. сделал по другому разобрался


 
Игорь Шевченко ©   (2007-07-27 16:53) [12]

umbra ©   (27.07.07 16:39) [10]


> if str2[i] <> "" then


А это зачем ?



Страницы: 1 вся ветка

Текущий архив: 2007.08.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1185264826
Kolan
2007-07-24 12:13
2007.08.19
Как правильно создать TDataBase динамически?


3-1178391336
Wiser87
2007-05-05 22:55
2007.08.19
Сортировка в DBEdit


15-1184921014
Kolan
2007-07-20 12:43
2007.08.19
Однако не появления BDS2006 на TaskBar е сильно виляет на работу.


15-1184687428
Ricks
2007-07-17 19:50
2007.08.19
Обман программы


2-1185190320
Oleg_teacher
2007-07-23 15:32
2007.08.19
скрола на мишке