Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблема перевода DOS-Win кодировки


R.O.O.T ©   (2007-07-27 16:12:00) 

вот код
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) ошибка появляется что может быть?


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

umbra ©   (27.07.07 16:39) [10]


> if str2[i] <> "" then


А это зачем ?


r.o.o.t   (2007-07-27 16:46:00) [2]

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


umbra   (2007-07-27 16:39:00) [3]

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

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:38:00) [4]

непомагает


clickmaker   (2007-07-27 16:33:00) [5]


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

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


r.o.o.t   (2007-07-27 16:30:00) [6]

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


clickmaker   (2007-07-27 16:28:00) [7]


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

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

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


umbra   (2007-07-27 16:27:00) [8]

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


r.o.o.t   (2007-07-27 16:25:00) [9]

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


r.o.o.t   (2007-07-27 16:24:00) [10]

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


clickmaker   (2007-07-27 16:20:00) [11]


> OemToChar(Src, Str);

а что такое Str?


umbra   (2007-07-27 16:14:00) [12]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо