Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

проблема перевода 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
4-1172921349
buben
2007-03-03 14:29
2007.08.19
MainMenu1 нажатие кнопки в меню


15-1185099697
ProgRAMmer Dimonych
2007-07-22 14:21
2007.08.19
Борьба с повторной отправкой формы


15-1184743148
Александр Иванов
2007-07-18 11:19
2007.08.19
Дизайн страниц SharePoint


2-1185023525
NewZ
2007-07-21 17:12
2007.08.19
Как определить что над одним объектом находится другой?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский