Главная страница
    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.048 c
5-1159773491
Image
2006-10-02 11:18
2007.08.19
Событие OnTimer в созданном компоненте


15-1184845462
db2admin
2007-07-19 15:44
2007.08.19
Помогите составить список литературы пожалуйста, для начинающих


15-1184970892
Tirael
2007-07-21 02:34
2007.08.19
остатки СССР


1-1181051958
DelphiN!
2007-06-05 17:59
2007.08.19
WebBrowser загружает страницу из кэша с флагом navNoReadFromCache


1-1181524266
Yus
2007-06-11 05:11
2007.08.19
Помогите с RichEdit





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