Главная страница
    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.045 c
1-1181652993
Tab
2007-06-12 16:56
2007.08.19
координаты x и y при начале Drag n Drop


1-1181134690
Arm79
2007-06-06 16:58
2007.08.19
маппинг файлов


2-1185342922
gen
2007-07-25 09:55
2007.08.19
*.gif, *.jpeg


1-1181132166
ILUT
2007-06-06 16:16
2007.08.19
Работа с буфером


2-1185219808
Новичеек
2007-07-23 23:43
2007.08.19
convert vartostr





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский