Главная страница
    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.036 c
3-1091137474
Максим
2004-07-30 01:44
2004.08.22
Access - как измененить значение поля?


3-1090927751
Экспериментатор
2004-07-27 15:29
2004.08.22
Как правильно сортировать?


1-1092048772
}|{yk
2004-08-09 14:52
2004.08.22
AV при Destroy


1-1091793629
Sourse
2004-08-06 16:00
2004.08.22
Как перетаскивать файлы из проводника в программу


3-1091027872
Koala
2004-07-28 19:17
2004.08.22
Как построить запрос





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