Delphi Can

Orjinalini görmek için tıklayınız: Telefon Optimize
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Selamlar,
Girilen telefon numarasına en başarılı nasıl optimize edebilirim.

Telefon numarası nasıl girilirse girilsin, 5554443322 şeklinde çıktı alacak bir fonksiyon yazmam gerekiyor

Örnek veri girişleri şu şekilde olabilir
00905554443322,
+905554443322,
905554443322,
0554443322,
Sadece Türkiye mi? Eğer öyle ise son 10 haneyi alabilirsin.
(30-12-2016, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Selamlar,
Girilen telefon numarasına en başarılı nasıl optimize edebilirim.

Telefon numarası nasıl girilirse girilsin, 5554443322 şeklinde çıktı alacak bir fonksiyon yazmam gerekiyor

Örnek veri girişleri şu şekilde olabilir
00905554443322,
+905554443322,
905554443322,
0554443322,


uses System.StrUtils;

var
 FTmp : String;
begin
 FTmp := '00905554443322';
 FTmp := RightStr(FTmp, 10); // Sağdan sola 10 karakter al.
end;

(30-12-2016, Saat: 17:01)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(30-12-2016, Saat: 16:44)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Selamlar,
Girilen telefon numarasına en başarılı nasıl optimize edebilirim.

Telefon numarası nasıl girilirse girilsin, 5554443322 şeklinde çıktı alacak bir fonksiyon yazmam gerekiyor

Örnek veri girişleri şu şekilde olabilir
00905554443322,
+905554443322,
905554443322,
0554443322,


uses System.StrUtils;

var
 FTmp : String;
begin
 FTmp := '00905554443322';
 FTmp := RightStr(FTmp, 10); // Sağdan sola 10 karakter al.
end;



Bende böyle bir fonksiyon yapmıştım Smile  Kulağımı tersten tutmuşum.  - RightStr(FTmp, 10); // Sağdan sola 10 karakter al.- bu fonksiyonu bilmiyordum

function TForm2.PhoneOpt(Phone: string): string;
var
i,s:integer;
begin
 Phone := Trim(StringReplace(Phone, '+', '', [rfReplaceAll]));
 if (Length(Phone) < 11) then Result := Phone;
 s := Length(Phone)-1;
 if (Length(Phone) > 10 ) then
 begin
    for I := 0 to 9 do
    begin
       Result := Phone.Chars[s]+ Result;
       Dec(s);
    end;
 end;
end;
Ya 444 0 375 türk telekom ararsa ne yapacaksınız Smile

Şahsi fikrimdir ki gelen numarayı uzunluğunu bulman ve case ile senaryoya göre çıktı vermen
(30-12-2016, Saat: 17:31)esrehmaan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ya 444 0 375 türk telekom ararsa ne yapacaksınız Smile

Şahsi fikrimdir ki gelen numarayı uzunluğunu bulman ve case ile senaryoya göre çıktı vermen

trim ve replace o işleri hallediyor yazdım onları Wink
çünkü +90545xxx şeklinde giren de oluyor
(30-12-2016, Saat: 17:41)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(30-12-2016, Saat: 17:31)esrehmaan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Ya 444 0 375  türk telekom ararsa ne yapacaksınız Smile

Şahsi fikrimdir ki gelen numarayı uzunluğunu bulman ve case ile senaryoya göre çıktı vermen

trim ve replace o işleri hallediyor yazdım onları Wink
çünkü +90545xxx şeklinde giren de oluyor


 function NumaraDuzelt(GelenNo : string) : String;
begin
Case length(Gelenno) of
      1..10 : result:=Gelenno ;
      11..200: result:=RightStr(GelenNo,10);
End

bu daha basit zaar Smile
(30-12-2016, Saat: 17:52)esrehmaan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(30-12-2016, Saat: 17:41)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.trim ve replace o işleri hallediyor yazdım onları Wink
çünkü +90545xxx şeklinde giren de oluyor


 function NumaraDuzelt(GelenNo : string) : String;
begin
Case length(Gelenno) of
      1..10 : result:=Gelenno ;
      11..200: result:=RightStr(GelenNo,10);
End

bu daha basit zaar Smile

Öyle Görünüyor ellaaam peki gelen numara içerisinden rakam dışında olanları tek seferde nasıl silerim örneğin kullanıcı 4442525? gibi girdi veya 444.25.25 gibi numara dışındaki herşeyi temizyeyeyim
İyi akşamlar. Numara türkiye için kullanacaksan bir combobox koy, içerisine operatör numaralarını yaz. Karşısınada umberedit koy maxlength belirle.

uses System.SysUtils, System.Character;

function Filter(const Input: string; const Keep: TFunc<Char, Boolean>): string;
var
 C: Char;
 N: Integer;
begin
 SetLength(Result, Length(Input));
 N := 0;
 for C in Input do
   if Keep ( C ) then  
   begin
     inc(N);
     Result[N] := C;
   end;
 SetLength(Result, N);
end;

function IsNotLetter(C: Char): Boolean;
begin
 Result := not C.IsLetter;
end;

function NumaraDuzelt(GelenNo : string) : String;
begin
Case length(Gelenno) of
      1..10 : result:=Filter(Gelenno, IsNotLetter) ;
      11..200: result:=RightStr(Filter(GelenNo, IsNotLetter),10);
End
End;






Buda öyle Ellamm   Smile
Sayfalar: 1 2