Главная страница
    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.47 MB
Время: 0.063 c
2-1185515068
delphino
2007-07-27 09:44
2007.08.19
Неужели нужно на каждой раб.станцие настраивать BDE?


3-1178164046
Slider007
2007-05-03 07:47
2007.08.19
Транзакции в FireBird


15-1185014843
Kostafey
2007-07-21 14:47
2007.08.19
С днем рождения ! 21 июля


15-1184349114
ССергей
2007-07-13 21:51
2007.08.19
Гугль и mail.ru


4-1172557563
GrayFace
2007-02-27 09:26
2007.08.19
"Сбросить" ListView_SetColumnWidth при ViewStyle = vsList





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