Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[+10 Puan] String Manipülasyon İşlemleri
#11
1. Sağdan N Karakter Alma
function IsoRightStr(Value: string; Count: Integer): string;
begin
 Result := String(PWideChar(Value) + (Value.Length - Count));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := IsoRightStr('DelphiCan', 3);
end;

1. Sağdan N Karakter Alma
unsafe class Program
{
   static string IsoRightStr(string Value, int Count)
   {
       fixed (char* p = Value)
       {
           return new string(p + (Value.Length - Count));
       }
   }

   static void Main(string[] args)
   {
       string result = IsoRightStr("DelphiCan", 3);
       Console.WriteLine(result);
   }
}
Bugünlük bu kadar...
WWW
Cevapla
#12
Bunlar fazla basit gibi geldi.
Cevapla
#13
(13-11-2018, Saat: 01:07)ssahinoglu Adlı Kullanıcıdan Alıntı: Bunlar fazla basit gibi geldi.

Algoritmanın amacı da bu değil mi? İşi en basite indirgemek.
Cevapla
#14
(13-11-2018, Saat: 01:07)ssahinoglu Adlı Kullanıcıdan Alıntı: Bunlar fazla basit gibi geldi.

İyi günler. İşin aslı öncelik sıralamasına göre kodların;
-Doğru çalışması,
-Hızlı çalışması,
-(mümkün olduğu kadar) Kısa yazılmış olması,
-Basit ve okunabilir yazılmış olması
sağlanmalıdır. Bütün bunları sağlayacak en yakın kodlama en iyi kodlamadır denilebilir. Tabi her bir madde ayrı bir boyuta kapı açacağı için meseleler kısaca yazıldığı kadar basit olmayabiliyor Smile . İyi çalışmalar.
Cevapla
#15
(12-11-2018, Saat: 15:15)yhackup Adlı Kullanıcıdan Alıntı: Bende ek soru sorayım en hızlı cevaplayana +4 Smile


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;

Function tana.StringPad(
  InputStr,//tamamlanacak metin
 FillChar: String;//tamamlama karakteri
 StrLen: Integer;//uzunluk
 StrJustify: Boolean): String;//tamamlama yönü
Var
 TempFill: String;
 Counter : Integer;
Begin
 If Not (Length(InputStr) = StrLen) Then
 Begin
   If Length(InputStr) > StrLen Then
   Begin
     InputStr := copy(InputStr,1,StrLen);
   End
   Else
   Begin
     TempFill := '';
     For Counter := 1 To StrLen-Length(InputStr) Do
     Begin
       TempFill := TempFill + FillChar;
     End;
     If StrJustify Then
     Begin
       InputStr := InputStr + TempFill;
     End
     Else
     Begin
       InputStr := TempFill + InputStr ;
     End;
   End;
 End;
 Result := InputStr;
End;
Cevapla
#16
Ben de değişik bir kaç metod yazdım. Onları paylaşayım:

function GetData(const ASource : String; const AStart, ALen : Integer) : String;
var
 ASize,
 AIndex : Integer;
begin
 ASize := ALen;
 AIndex:= AStart;

 if ASource.IsEmpty then
   Exit('');

 if ASize <= 0 then
   Exit('');

 if ASize > ASource.Length then
   ASize := ASource.Length;

 if not AIndex in [1..ASize] then
   AIndex := 1;

 SetLength(Result, ASize);

 Move(ASource[AIndex], Pointer(Result)^, ASize * SizeOf(Char));
end;

function FromRight(const ASource : String; const ALen : Integer) : String;
begin
 Result := GetData(ASource, (ASource.Length - ALen) + 1, ALen);
end;

function FromLeft(const ASource : String; const ALen : Integer) : String;
begin
 Result := GetData(ASource, 1, ALen);
end;

function FromRightEx(const ASource : String; const ALen : Integer) : String;
var
 PCurrent,
 PEnd,
 PTarget : PChar;
begin
 SetLength(Result, ALen);

 PCurrent  := @ASource[(ASource.Length - ALen) + 1];
 PEnd      := @ASource[ASource.Length];
 PTarget   := @Result[1];

 while PCurrent <= PEnd do
 begin
   PTarget^ := PCurrent^;

   Inc(PCurrent);
   Inc(PTarget);
 end;
end;

function FromLeftEx(const ASource : String; const ALen : Integer) : String;
var
 PCurrent,
 PEnd,
 PTarget : PChar;
begin
 SetLength(Result, ALen);

 PCurrent  := @ASource[1];
 PEnd      := @ASource[ALen];
 PTarget   := @Result[1];

 while PCurrent <= PEnd do
 begin
   PTarget^ := PCurrent^;

   Inc(PCurrent);
   Inc(PTarget);
 end;
end;

GetData metodunda bazı güvenlik kontrolleri koydum, diğerlerine de ekleyip eklememek tamamen sizin tasarrufunuz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#17
En güzel örnekler verilmiş. Benim nacizane katı kod olmadan yaptığım:

procedure TForm1.FormCreate(Sender: TObject);
var
 Str: String;
 TempStr: String;
 Num: Integer;
 Count: Integer;
begin
 Str:='';
 Str:='DelphiCan'; // Girdi
 TempStr:='';
 Count:=3; // Girdi
 Num:=Str.Length - Count + 1;
 while Num <= Str.Length do
 begin
   TempStr:=TempStr + Copy(Str, Num, 1);
   Num:=Num + 1;
 end;
 Label1.Caption:=TempStr;
end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  String üzerinden enum değeri çağırma Abdullah ILGAZ 11 8.483 24-08-2023, Saat: 19:26
Son Yorum: veteran
  Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) Tuğrul HELVACI 26 18.664 06-10-2022, Saat: 18:47
Son Yorum: Master_Crazy
  Tek dizi içinde öncelik sırası belirleme (+10 puan) Abdullah ILGAZ 4 5.121 29-11-2017, Saat: 12:07
Son Yorum: SimaWB
  Bir Record'un içini doldurma (+20 puan) Tuğrul HELVACI 21 19.446 05-10-2017, Saat: 16:33
Son Yorum: ismailkocacan
  AV (Access Violation) nedir, neden bu hatayı alırız ? (+50 Puan) Tuğrul HELVACI 18 19.683 30-09-2017, Saat: 12:14
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi