Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.383 Üstad
12-11-2018, Saat: 13:20
(Son Düzenleme: 12-11-2018, Saat: 13:22, Düzenleyen: Abdullah ILGAZ.)
Merhaba,
Aşağıdaki işlemleri en pratik ve kısa yöntem ile yapan tüm arkadaşlara +10 puan verilecektir.
Not: Kullanılan yöntem ve yaklaşımın tekrar etmesi durumunda aynı yöntemden puan verilmeyecektir. Bu yüzden o yöntemi ilk kullanan puanı alır.
1. Sağdan N Karakter Alma (+2 Puan)
İçine verilen string değişkenin sonundan istenilen miktarda karakteri veren fonksiyon.
var
str:string;
begin
str := 'DelphiCan';
ShowMessage(SizinFonksiyon(str,3)); // Sondan 3 karakteri ver. Çıktı: "Can" olmalı.
end;
Dipnot: RightStr(value,3) bu işi gören System.StrUtils kütüphanesindeki bir fonksiyondur.
2. Seçilen yöne göre istenilen miktarda karakter alma (+5 Puan)
String verinin ilk/son üç karakterini alan fonksiyon.
var
str:string;
begin
str := 'DelphiCan';
ShowMessage(SizinFonksiyon(str,'L',3)); // Soldan 3 karakteri ver. Çıktı: "Del" olmalı.
ShowMessage(SizinFonksiyon(str,'R',3)); // Sağdan 3 karakteri ver. Çıktı: "Can" olmalı.
end;
3. Belirtilen string değerinin sondan N karakteri silme (+3 Puan)
String ve belirtilen miktarda karakteri soldan/sağdan silen fonksiyon.
var
str:string;
begin
str := 'DelphiCan';
ShowMessage(SizinFonksiyon(str,'L',6)); // Soldan 6 karakteri sil. Çıktı: "Can" olmalı.
ShowMessage(SizinFonksiyon(str,'R',3)); // Sağdan 3 karakteri sil. Çıktı: "Delphi" olmalı.
end;
Kolay gelsin!
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
Aşağıdaki kodlar Fonksiyon haline getirilince iş en kısa yoldan hallolur bence,
d:='DelphiCan';
ShowMessage('Sağdan 3 karakteri ver:'+copy(d,length(d)-2,3));
ShowMessage('Soldan 3 karakteri ver:'+copy(d,1,3));
delete(d,length(d)-2,3); // sağdan(sondan) 3 karakter sil
ShowMessage('Sağdan(sondan) 3 karakter silindi:'+d);
Yorumları: 2.153
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.659 Uzman
12-11-2018, Saat: 15:15
(Son Düzenleme: 12-11-2018, Saat: 15:15, Düzenleyen: yhackup.)
Bende ek soru sorayım en hızlı cevaplayana +4
verdiğim stringi sağdan veya soldan verdiğim karakter ile tamamlayacak.
function LeftPad(S: string; Ch: Char; Len: Integer): string;
function RightPad(S: string; Ch: Char; Len: Integer): string;
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
12-11-2018, Saat: 15:19
(Son Düzenleme: 12-11-2018, Saat: 15:29, Düzenleyen: esistem.
Sebep: Tip eklendi
)
Buda Fonksiyon hali olsun.
type
TIstenen = (ISagdanAl, ISoldanAl, IParcaAl, ISoldanSil, ISagdanSil);
....
....
Function StringManipule(Deger:String; Istenen:TIstenen; Basla, KacAdet:Integer):String;
Begin
If (Istenen=ISagdanAl)
Then Result:=copy(Deger,length(Deger)-(KacAdet-1),KacAdet);
If (Istenen=ISoldanAl)
Then Result:=copy(Deger,1,KacAdet);
If (Istenen=IParcaAl)
Then Result:=copy(Deger,Basla,KacAdet);
If (Istenen=ISoldanSil)
Then Begin
Delete(Deger,1,KacAdet);
Result:=Deger;
End;
If (Istenen=ISagdanSil)
Then Begin
delete(Deger,length(Deger)-(KacAdet-1),KacAdet);
Result:=Deger;
End;
End;
procedure TForm2.Button1Click(Sender: TObject);
var
d:string;
begin
d:='DelphiCan';
memo1.Lines.Add('Sağdan 3 karakter:'+StringManipule(d,ISagdanAl,0,3));
memo1.Lines.Add('Soldan 3 karakter:'+StringManipule(d,ISoldanAl,0,3));
memo1.Lines.Add('Parca Al:'+StringManipule(d,IParcaAl,2,3)); // 2den basla 3 karakter
memo1.Lines.Add('Soldan 3 karakter sil:'+StringManipule(d,ISoldanSil,0,6));
memo1.Lines.Add('Sağdan 3 karakter sil:'+StringManipule(d,ISagdanSil,0,3));
end;
Yorumları: 2.153
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.659 Uzman
12-11-2018, Saat: 15:32
(Son Düzenleme: 12-11-2018, Saat: 15:37, Düzenleyen: yhackup.)
farklı bir bakış,
function SolDanAl(Text: String; Len: Integer): String;
var
i: integer;
begin
for I := 1 to Len do
Result := Result + Text[i];
end;
function SagDanAl(Text: String; Len: Integer): String;
var
i: integer;
begin
for I := Length(Text) downto Len do
Result := Text[i]+ Result ;
end;
Yorumları: 884
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
Buda yakup hocanın istediği gibi sağına, soluna veya arada istediğiniz yere, istediğiniz karakterleri, istediğiniz kadar basan kod dahil;
type
TIstenen = (ISagdanAl, ISoldanAl, IParcaAl, ISoldanSil, ISagdanSil, ISagaEkle, ISolaEkle, IArayaEkle);
Function StringManipule(Deger,Eklenecek:String; Istenen:TIstenen; Basla, KacAdet:Integer):String;
Var
X:Integer;
Parca:String;
Begin
If (Istenen=ISagdanAl)
Then Result:=copy(Deger,length(Deger)-(KacAdet-1),KacAdet);
If (Istenen=ISoldanAl)
Then Result:=copy(Deger,1,KacAdet);
If (Istenen=IParcaAl)
Then Result:=copy(Deger,Basla,KacAdet);
If (Istenen=ISoldanSil)
Then Begin
Delete(Deger,1,KacAdet);
Result:=Deger;
End;
If (Istenen=ISagdanSil)
Then Begin
delete(Deger,length(Deger)-(KacAdet-1),KacAdet);
Result:=Deger;
End;
If (Istenen=ISagaEkle)
Then Begin
Parca := '';
for x:= 1 to KacAdet do Parca := Parca + Eklenecek;
Result:=Deger+Parca;
End;
If (Istenen=ISolaEkle)
Then Begin
Parca := '';
for x:= 1 to KacAdet do Parca := Parca + Eklenecek;
Result:=Parca+Deger;
End;
If (Istenen=IArayaEkle)
Then Begin
Parca := '';
for x:= 1 to KacAdet do Parca := Parca + Eklenecek;
Result:=copy(Deger,1,Basla)+Parca+copy(Deger,Basla+1,Length(Deger));
End;
End;
procedure TForm2.Button1Click(Sender: TObject);
var
d:string;
begin
d:='DelphiCan';
memo1.Lines.Add('Sağdan 3 karakter:'+StringManipule(d,'',ISagdanAl,0,3));
memo1.Lines.Add('Soldan 3 karakter:'+StringManipule(d,'',ISoldanAl,0,3));
memo1.Lines.Add('Parca Al:'+StringManipule(d,'',IParcaAl,2,3)); // 2den basla 3 karakter
memo1.Lines.Add('Soldan 6 karakter sil:'+StringManipule(d,'',ISoldanSil,0,6));
memo1.Lines.Add('Sağdan 3 karakter sil:'+StringManipule(d,'',ISagdanSil,0,3));
memo1.Lines.Add('Sağa 3 karakter 5 Ekle:'+StringManipule(d,'5',ISagaEkle,0,3));
memo1.Lines.Add('Sola 3 karakter 5 Ekle:'+StringManipule(d,'5',ISolaEkle,0,3));
memo1.Lines.Add('Soldan 6 karakter sonra 3 tane 5 Ekle Devam Et:'+StringManipule(d,'5',IArayaEkle,6,3));
end;
Yorumları: 21
Konuları: 3
Kayıt Tarihi: 23-10-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 31 Başlangıç
12-11-2018, Saat: 15:56
(Son Düzenleme: 12-11-2018, Saat: 16:37, Düzenleyen: Fesih ARSLAN.)
c# ComObject hazırlarım
public string LeftPad(string s, int Len){
return s.Substring(0, Len);
}
ve
uses ComObj;
procedure TForm2.btnClick(Sender: TObject);
var
oleObject: OleVariant;
begin
try
oleObject := CreateOleObject('CSLibrary.MyClass');
ShowMessage('result= ' + oleObject.LeftPad('DelphiCan', 3));
except on E: Exception do
ShowMessage('COM Error: ' + #13 + #10 + e.Message);
end;
end;
Yorumları: 510
Konuları: 64
Kayıt Tarihi: 05-02-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.2
- Delphi 10.1
- Delphi 7
Rep Puanı: 3.355 Uzman
Hepsi bir arada. Çok doğru bulmuyorum ama hepsi bir arada oldu. Bazen kafa karışıklığına neden oluyor. Ayrı olması daha anlaşılır ve müdahale etmesi basit oluyor.
TDirection = (tdLeft, tdRight);
TFunctionMode = (fmGet, fmDel);
...
function getLeftRightStr(pSource: string; pCount: Integer; pDirection: TDirection = tdLeft; pMode: TFunctionMode = fmGet): string;
...
function TfrmMain.getLeftRightStr(pSource: string; pCount: Integer; pDirection: TDirection; pMode: TFunctionMode): string;
var
n1, nLen: Integer;
begin
nLen := Length(pSource);
if pMode = fmGet then begin
if pDirection = tdLeft then begin
Result := MidStr(pSource, 1, pCount);
//ShowMessage(getLeftRightStr('DelphiCan', 3, tdLeft, fmGet)); //Soldan 3 karakteri ver. Çıktı: "Del"
end else if pDirection = tdRight then begin
Result := MidStr(pSource, nLen-pCount+1, pCount);
//ShowMessage(getLeftRightStr('DelphiCan', 3, tdRight, fmGet)); //Sağdan 3 karakteri ver. Çıktı: "Can"
end;
end else if pMode = fmDel then begin
if pDirection = tdLeft then begin
Result := MidStr(pSource, pCount+1, nLen-pCount);
//ShowMessage(getLeftRightStr('DelphiCan', 6, tdLeft, fmDel)); //Soldan 6 karakteri sil. Çıktı: "Can"
end else if pDirection = tdRight then begin
Result := MidStr(pSource, 1, nLen-pCount);
//ShowMessage(getLeftRightStr('DelphiCan', 3, tdRight, fmDel)); //Sağdan 3 karakteri sil. Çıktı: "Delphi"
end;
end;
end;
Yorumları: 253
Konuları: 16
Kayıt Tarihi: 26-09-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.279 Uzman
1. Sağdan N Karakter Alma
String __fastcall isoRightStr(String value, int count) {
return String(value.c_str() + (value.Length() - count));
}
void __fastcall TForm1::Button1Click(TObject *Sender) {
Caption = isoRightStr("DelphiCan", 3);
}
Yorumları: 59
Konuları: 11
Kayıt Tarihi: 14-10-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 136 Başlangıç
https://youtu.be/08abWuE-Gtc
Videonun üstüne de süper oldu valla 
Nöronlarınıza sağlık
Bizde bilirdik firavunun yanında olmayı, musa'nın haklı olduğunu bilmeseydik
|