c den delphiye kod çevrimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
BOGACHAN
Üye
Mesajlar: 38
Kayıt: 12 May 2004 02:37
Konum: istanbbul

c den delphiye kod çevrimi

Mesaj gönderen BOGACHAN »

s.a
dbgrid de çift tıklayarak istenilen satırları seçme ve seçili satırların rengini değiştirme daha sonrada bu seçili olanları fatura tablosuna insert etme ile alakalı bi çalışmam var.

arkadaşımdan satır seçme ve boyama ile alaklı kodları aldım c ait olan bu kodlardan delphiye çevirnce 2 yerde hata aldım.

Kod: Tümünü seç

Secim()
{
AnsiString ss1="";
char st1[21];
sprintf(st1,"%02d-%08d-%04d\0",TIP,FISNO,SATIR);
ss1=AnsiString(st1);
int i1=SecimList->IndexOf(s1);
if(i1==-1) SecimList->Add(s1); 
else SecimList->Delete(i1);
DBGrid1->Repaint();
}
---------
DBGrid1DrawColumnCell()
{
AnsiString ss1="";
char st1[21];
sprintf(st1,"%02d-%08d-%04d\0",TIP,FISNO,SATIR);
ss1=AnsiString(st1);
i=SecimList->IndexOf(S1);
if(i!=-1) {
    DBGrid1->Canvas->Font->Color = clRed;
    DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
bu kod satırlarında seçme bölümündeki "char st1[21];" bu satırda array type required hatası alıyorum ve birde c de olan sprintf yerine delphide ne kullana bilirim ?
yardımcı olursanız sevinirim. teşşükürler.
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: c den delphiye kod çevrimi

Mesaj gönderen Ertugrul »

sprintf = format. Kodda hatalar gordum fakat anladigim kadariyla cevirdim.

Kod: Tümünü seç

procedure Secim(s1:string); //s1 global degisken herhalde, yinede buraya ekledim
var
ss1: string;
i1:integer;
begin
	st1:=format("%02d-%08d-%04d\0",[TIP,FISNO,SATIR]);
	i1:=SecimList.IndexOf(s1);
	if(i1=-1) then
		SecimList.Add(s1);	//st1 i eklemek istemediginden emin misin?
	else
		SecimList.Delete(i1);
	DBGrid1.Repaint();
end;

Kod: Tümünü seç

Procedure DBGrid1DrawColumnCell( .... )
var
	ss1:string;
	i:integer;
begin
	ss1:=format("%02d-%08d-%04d\0",[TIP,FISNO,SATIR]);
	i:=SecimList.IndexOf(s1);	// s1 nedir? ss1 demek istemis olmayasin?
	if(i<>-1)
	begin
		DBGrid1.Canvas.Font.Color := clRed;
		DBGrid1.DefaultDrawColumncELL(.....);
	end;
end;
BOGACHAN
Üye
Mesajlar: 38
Kayıt: 12 May 2004 02:37
Konum: istanbbul

Re: c den delphiye kod çevrimi

Mesaj gönderen BOGACHAN »

teşekkürler. Bende çözümü buldum. format kullandum bende. belki yardımcı olur diye burada paylaşmak isterim.

Kod: Tümünü seç

var
  SecimList:TStringList;
  ss1:ansistring;
  i1:integer; //global olarak tanımlanan değişkenler

procedure TFataktar.DBGrid1DblClick(Sender: TObject); //burası dbgridde aktarılacak satırların seçilmesi
begin
ss1:='';
ss1:=format('%02d-%08d-%04d\0',[ADOQuery1TIP.Value,ADOQuery1FISNO.Value,ADOQuery1SATIR.Value]);
i1:=SecimList.IndexOf(ss1);
if(i1=-1) then SecimList.Add(ss1)
else
SecimList.Delete(i1);
DBGrid1.Repaint();
end;

procedure TFataktar.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; // sçilen alanların boyanması
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
ss1:='';
ss1:=format('%02d-%08d-%04d\0',[ADOQuery1TIP.Value,ADOQuery1FISNO.Value,ADOQuery1SATIR.Value]);
i1:=SecimList.IndexOf(ss1);
if(i1>-1) then
    begin
    DBGrid1.Canvas.Font.Color := clRed;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end
    else
    begin
    DBGrid1.Canvas.Font.Color := clBlack;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
end;
Cevapla