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

Вниз

Выделение и освобождение памяти   Найти похожие ветки 

 
NPP_OSI   (2004-08-03 18:51) [0]

Есть такой кусок кода:

procedure Koi2WinProc(Src, Dest: PChar);
const T: array[byte] of byte = (
$00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f, {0}
$10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $1a, $1b, $1c, $1d, $1e, $1f, {1}
$20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c, $2d, $2e, $2f, {2}
$30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3a, $3b, $3c, $3d, $3e, $3f, {3}
$40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, {4}
$50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5a, $5b, $5c, $5d, $5e, $5f, {5}
$60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $6a, $6b, $6c, $6d, $6e, $6f, {6}
$70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c, $7d, $7e, $7f, {7}
$80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $8a, $8b, $8c, $8d, $8e, $8f, {8}
$90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $a0, $9b, $b0, $9d, $b7, $9f, {9}
$a0, $a1, $a2, $b8, $a4, $a5, $a6, $a7, $a8, $a9, $aa, $ab, $ac, $ad, $ae, $af, {a}
$b0, $b1, $b2, $a8, $b4, $b5, $b6, $b7, $b8, $b9, $ba, $bb, $bc, $bd, $be, $a9, {b}
$fe, $e0, $e1, $f6, $e4, $e5, $f4, $e3, $f5, $e8, $e9, $ea, $eb, $ec, $ed, $ee, {c}
$ef, $ff, $f0, $f1, $f2, $f3, $e6, $e2, $fc, $fb, $e7, $f8, $fd, $f9, $f7, $fa, {d}
$de, $c0, $c1, $d6, $c4, $c5, $d4, $c3, $d5, $c8, $c9, $ca, $cb, $cc, $cd, $ce, {e}
$cf, $df, $d0, $d1, $d2, $d3, $c6, $c2, $dc, $db, $c7, $d8, $dd, $d9, $d7, $da  {f}  );
begin
while Src^<>#0 do
begin
  Dest^ := Chr(T[Ord(Src^)]);
  Inc(Src); Inc(Dest);
end;
end;

procedure TMainForm.KOI2Win1Click(Sender: TObject);
var Src:string;
   Dest:PChar;
   CurrentFile:TStringlist;
   i:integer;
begin
 if FileListBox1.ItemIndex=-1 then Exit;

 CurrentFile:=TStringlist.Create;
 try
    CurrentFile.LoadFromFile(FilelistBox1.FileName);
    for i:=0 to Currentfile.count-1 do
    begin
       KOI2WinProc(PChar(Currentfile[i]),Dest);
       Currentfile[i]:=String(Dest);
    end;
    CurrentFile.SaveToFile(FilelistBox1.FileName+".KOI2Win");
 finally
    CurrentFile.Free;
 end;
end;

При его выполнении вылетает Access Violation в выделенной строке.
Полагаю, нужно выделить где-то память и потом её освободить.
Помогите, кто знает, как пофиксить это баг.


 
Anatoly Podgoretsky ©   (2004-08-03 18:55) [1]

Выделение и освобождение памяти


 
cyborg ©   (2004-08-03 19:55) [2]

Currentfile[i] -> Currentfile.strings[i] вроде, не помню


 
cyborg ©   (2004-08-03 19:57) [3]

И вообще вместо

   for i:=0 to Currentfile.count-1 do
   begin
      KOI2WinProc(PChar(Currentfile[i]),Dest);
      Currentfile[i]:=String(Dest);
   end;

сделай что-то типа:

 KOI2WinProc(PChar(Currentfile.Text),Dest);


 
Alx2 ©   (2004-08-03 20:00) [4]

Dest := PChar(Currentfile[i]);
 KOI2WinProc(Dest,Dest);
//     Currentfile[i]:=String(Dest); - вот это уже не надо



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.039 c
6-1088068383
][ncognito
2004-06-24 13:13
2004.08.22
Вкл/вкл LAN


1-1091899829
dracula
2004-08-07 21:30
2004.08.22
Как избавиться от подвисания программы


3-1091209848
Артём
2004-07-30 21:50
2004.08.22
Создание вторичных индексов


8-1086090320
GooFfy
2004-06-01 15:45
2004.08.22
Принятие голосовых команд


1-1091897459
Kostya-xp
2004-08-07 20:50
2004.08.22
Кто знает как загрузить анимированный курсор из “res” фай





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