Aradan silme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Aradan silme

Mesaj gönderen Serhat »

Selamlar, Excelden (YERLİ) ( 650809-0001080)*WPS gibi farklı id numaraları db'ye kaydediyorum, kayıt sırasında aradan "-" dan sonra kırmızı renk ile belirlediğim "0" ları silmem lazım bu yöntemi nasıl yapabilirim?

Kod: Tümünü seç

function TForm2.RIdTemizle(Harf: String): String;
const
  Sil: String = 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZQX()"*£_<>;:~,+?=!^%&[]{}?\/ ';
var
  N: Integer;
begin
  for N := 1 to length(Sil) do
  begin
    Harf := StringReplace(Harf, Sil[N], '', [rfReplaceAll]);
    Result := Harf;
  end;
end;
AliCinkilic
Üye
Mesajlar: 43
Kayıt: 01 Kas 2013 10:03

Re: Aradan silme

Mesaj gönderen AliCinkilic »

"-" ye kadar olan kısmı ayırıp sonraki paranteze kadar olan kısmı alıp integer a çevirmek yeterli olacaktır.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Aradan silme

Mesaj gönderen ertank »

Merhaba,

Aşağıdaki gibi bir kod ile istediğinizi yapmanız mümkün olabilir.

Kod: Tümünü seç

function RemoveZeroNumbers(const Value: string; const RemovingStartingPosition: Integer): string;
var
  SrcPtr, DestPtr: PChar;
  i, NonZero, LocalPosition: Integer;
begin
  SrcPtr := PChar(Value);
  SetLength(Result, Length(Value));
  DestPtr := PChar(Result);

  if RemovingStartingPosition <= 0 then
    LocalPosition := Length(Value)
  else
    LocalPosition := RemovingStartingPosition;

  for i := 1 to LocalPosition do
  begin
    DestPtr[0] := SrcPtr[0];
    Inc(DestPtr);
    Inc(SrcPtr);
  end;

  NonZero := 0;
  while (SrcPtr[0] <> #0) do
  begin
    if (SrcPtr[0] <> '0') or (NonZero = 1) then
    begin
      DestPtr[0] := SrcPtr[0];
      Inc(DestPtr);
      NonZero := 1;
    end;
    Inc(SrcPtr);
  end;

  DestPtr[0] := #0;
end;
Kullanımı şöyle olacaktır:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  Once, Sonra: string;
begin
  Once  := '(YERLİ) ( 650809-0001080)*WPS';
  Sonra := RemoveZeroNumbers(Once, Pos('-', Once));
  ShowMessage(Sonra);
end;
Cevapla