Yorumları: 178
Konuları: 57
Kayıt Tarihi: 07-08-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 79 Başlangıç
20-01-2019, Saat: 14:13
(Son Düzenleme: 20-01-2019, Saat: 14:13, Düzenleyen: ahmetb.)
Merhaba,
Tarihi alttaki kod ile " 20 Ocak 2019 Pazar" olarak alıyorum. Büyük harf olarak nasıl alabilirim?
Caption := FormatDateTime('D MMMM YYYY DDDD', CalendarViewDate.Date);
Örnek:
20 OCAK 2019 PAZAR
Yorumları: 230
Konuları: 11
Kayıt Tarihi: 06-07-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.178 Programcı
Caption := UpperCase(...);
Yorumları: 829
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.109 Uzman
(20-01-2019, Saat: 14:13)ahmetb Adlı Kullanıcıdan Alıntı: Merhaba,
Tarihi alttaki kod ile "20 Ocak 2019 Pazar" olarak alıyorum. Büyük harf olarak nasıl alabilirim?
Caption := FormatDateTime('D MMMM YYYY DDDD', CalendarViewDate.Date);
Örnek:
20 OCAK 2019 PAZAR
(20-01-2019, Saat: 14:37)ssahinoglu Adlı Kullanıcıdan Alıntı: Caption := UpperCase(...);
Merhabalar,
Türkçe karakterlerde sorun yaşarsınız.
Onu için forum içinde biraz arama ile çözümleyebilirsiniz.
http://www.delphican.com/showthread.php?...r#pid14508
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 178
Konuları: 57
Kayıt Tarihi: 07-08-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 79 Başlangıç
21-01-2019, Saat: 18:28
(Son Düzenleme: 21-01-2019, Saat: 18:29, Düzenleyen: ahmetb.)
Cevaplar için teşekkürler. Sorum sanırım yanlış anlaşıldı ilk harf değil, tüm harfler büyük olacaktı.
UpperCase Türkçe karakterde orun çıkartıyor.
Bu şekilde çözmüştüm.
function TFormCodes.TumHarfBuyuk(Harf: String): String;
const
Kucuk: String = 'abcçdefgğhıijklmnoöprsştuüvyzqw';
Buyuk: String = 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZQW';
var
I: Integer;
begin
for I := 1 to length(Kucuk) do
while Pos(Kucuk[I], Harf) > 0 do
Harf[Pos(Kucuk[I], Harf)] := Buyuk[I];
Result := Harf;
end;
Yorumları: 829
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.109 Uzman
(21-01-2019, Saat: 18:28)ahmetb Adlı Kullanıcıdan Alıntı: Cevaplar için teşekkürler. Sorum sanırım yanlış anlaşıldı ilk harf değil, tüm harfler büyük olacaktı.
UpperCase Türkçe karakterde orun çıkartıyor.
Bu şekilde çözmüştüm.
function TFormCodes.TumHarfBuyuk(Harf: String): String;
const
Kucuk: String = 'abcçdefgğhıijklmnoöprsştuüvyzqw';
Buyuk: String = 'ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZQW';
var
I: Integer;
begin
for I := 1 to length(Kucuk) do
while Pos(Kucuk[I], Harf) > 0 do
Harf[Pos(Kucuk[I], Harf)] := Buyuk[I];
Result := Harf;
end;
Merhabalar,
Sorunu çözdüğünüze ve çözüm kodlarınızı da paylaştığınız için teşekkürler.
Göndermiş olduğum link'i bir başlangıç oluşturması içi belirtmiştim.
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 833
Konuları: 141
Kayıt Tarihi: 07-12-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.077 Uzman
21-01-2019, Saat: 19:38
(Son Düzenleme: 21-01-2019, Saat: 19:39, Düzenleyen: adelphiforumz.)
Döngülerle uğraşmadan kullanılabilir düşüncesindeyim
Delphi hatırladığım kadarı ile Upper Converter kısmında 'ı' ve 'i' harflerinde sorun yaşıyordu
Çözüm olarak aşağıdaki de aynı işi yapacaktır.
UpperCase(StringReplace(StringReplace(Deger, 'ı', 'I', [rfReplaceAll, rfIgnoreCase]), 'i', 'I', [rfReplaceAll, rfIgnoreCase]));
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz.
Yorumları: 121
Konuları: 3
Kayıt Tarihi: 10-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.759 Programcı
21-01-2019, Saat: 21:54
(Son Düzenleme: 22-01-2019, Saat: 07:08, Düzenleyen: Bahadir.Alkac.
Sebep: Copyright işaretine dönen kod düzeltildi
)
(21-01-2019, Saat: 19:38)adelphiforumz Adlı Kullanıcıdan Alıntı: Döngülerle uğraşmadan kullanılabilir düşüncesindeyim
Delphi hatırladığım kadarı ile Upper Converter kısmında 'ı' ve 'i' harflerinde sorun yaşıyordu
Çözüm olarak aşağıdaki de aynı işi yapacaktır.
UpperCase(StringReplace(StringReplace(Deger, 'ı', 'I', [rfReplaceAll, rfIgnoreCase]), 'i', 'I', [rfReplaceAll, rfIgnoreCase]));
Merhaba,
StringReplace fonksiyonu fazla karmaşık bir fonksiyon. Hele de bu kadar basit bir iş için.
function StringReplace(const Source, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
var
Str: string;
xOldPattern: string;
FoundPos: Integer;
I, J: Integer;
SourceIdx: Integer;
DestIdx: Integer;
LCharsToCopy: Integer;
FindCount: Integer;
PosArray: array of Integer;
LenOP: Integer;
LenNP: Integer;
LenS: Integer;
ArrLen: Integer;
LPResult, LPSource, LPNewPattern: PChar;
LReplaceAll: Boolean;
begin
LenOP := Length(OldPattern);
LenS := Length(Source);
if (LenOP = 0) or (LenS = 0) then
Exit(Source);
if rfIgnoreCase in Flags then
begin
xOldPattern := AnsiUpperCase(OldPattern);
LenOP := Length(xOldPattern);
if SameStr(xOldPattern, AnsiLowerCase(OldPattern)) then // Special case, for example only symbols (+ - , * .....)
Str := Source
else
begin
Str := AnsiUpperCase(Source);
LenS := Length(Str);
end;
end
else
begin
xOldPattern := OldPattern;
Str := Source;
end;
if Str.Length <> Source.Length then
begin
Result := '';
I := Low(string);
while I <= High(Source) do
begin
if string.Compare(Source, I - Low(string), OldPattern, 0, LenOP, True) = 0 then
begin
Result := Result + NewPattern;
Inc(I, LenOP);
if not (rfReplaceAll in Flags) then
begin
Result := Result + Source.Substring(I - Low(string), MaxInt);
Break;
end;
end
else
begin
Result := Result + Source[I];
Inc(I);
end;
end;
end
else
begin
FoundPos := 1;
FindCount := 0;
ArrLen := 0;
LReplaceAll := not (rfReplaceAll in Flags);
repeat
FoundPos := Pos(xOldPattern, Str, FoundPos);
if FoundPos = 0 then
Break;
Inc(FindCount);
if ArrLen < FindCount then
begin
if ArrLen = 0 then
ArrLen := 32
else
ArrLen := ArrLen * 2;
SetLength(PosArray, ArrLen); // call SetLength less frequently makes a huge difference when replacing multiple occurrences
end;
PosArray[FindCount - 1] := FoundPos - 1; // Zero based array
Inc(FoundPos, LenOP);
until LReplaceAll;
if FindCount > 0 then
begin
LenNP := Length(NewPattern);
LPSource := Pointer(Source); // We use a pointer cast to avoid the _UStrToPWChar call injected by the compiler
LPNewPattern := Pointer(NewPattern); // We use a pointer cast to avoid the _UStrToPWChar call injected by the compiler
if LenNP = LenOP then
begin // special case where Length(OldPattern) = Length(NewPattern)
SetLength(Result, LenS); // in this case, we can optimize it even further
LPResult := Pointer(Result); // We use a pointer cast to avoid the uniquestring call injected by the compiler
Move(LPSource^, LPResult^, LenS * SizeOf(Char));
if LenNP = 1 then
for I := 0 to FindCount - 1 do
LPResult[PosArray[I]] := LPNewPattern^
else if LenNP <= 8 then
for I := 0 to FindCount - 1 do
for J := 0 to LenNP -1 do
LPResult[PosArray[I] + J] := LPNewPattern[J]
else
for I := 0 to FindCount - 1 do
Move(LPNewPattern^, LPResult[PosArray[I]], LenNP * SizeOf(Char));
end
else
begin
SetLength(Result, LenS + ((LenNP - LenOP) * FindCount));
LPResult := Pointer(Result); // We use a pointer cast to avoid the uniquestring call injected by the compiler
SourceIdx := 0;
DestIdx := 0;
if LenNP = 0 then
for I := 0 to FindCount - 1 do
begin
LCharsToCopy := PosArray[I] - SourceIdx;
if LCharsToCopy > 0 then
begin
if LCharsToCopy = 1 then
begin
LPResult[DestIdx] := LPSource[SourceIdx];
Inc(SourceIdx);
Inc(DestIdx);
end
else if LCharsToCopy <= 8 then
begin
for J := 0 to LCharsToCopy - 1 do
LPResult[DestIdx + J] := LPSource[SourceIdx + J];
Inc(SourceIdx, LCharsToCopy);
Inc(DestIdx, LCharsToCopy);
end
else
begin
Move(LPSource[SourceIdx], LPResult[DestIdx], LCharsToCopy * SizeOf(Char));
Inc(SourceIdx, LCharsToCopy);
Inc(DestIdx, LCharsToCopy);
end;
end;
Inc(SourceIdx, LenOP);
end
else if LenNP = 1 then
for I := 0 to FindCount - 1 do
begin
LCharsToCopy := PosArray[I] - SourceIdx;
if LCharsToCopy > 0 then
begin
if LCharsToCopy = 1 then
begin
LPResult[DestIdx] := LPSource[SourceIdx];
Inc(SourceIdx);
Inc(DestIdx);
end
else if LCharsToCopy <= 8 then
begin
for J := 0 to LCharsToCopy - 1 do
LPResult[DestIdx + J] := LPSource[SourceIdx + J];
Inc(SourceIdx, LCharsToCopy);
Inc(DestIdx, LCharsToCopy);
end
else
begin
Move(LPSource[SourceIdx], LPResult[DestIdx], LCharsToCopy * SizeOf(Char));
Inc(SourceIdx, LCharsToCopy);
Inc(DestIdx, LCharsToCopy);
end;
end;
LPResult[DestIdx] := LPNewPattern[0];
Inc(DestIdx);
Inc(SourceIdx, LenOP);
end
else
for I := 0 to FindCount - 1 do
begin
LCharsToCopy := PosArray[I] - SourceIdx;
if LCharsToCopy > 0 then
begin
if LCharsToCopy = 1 then
begin
LPResult[DestIdx] := LPSource[SourceIdx];
Inc(SourceIdx);
Inc(DestIdx);
end
else if LCharsToCopy <= 8 then
begin
for J := 0 to LCharsToCopy - 1 do
LPResult[DestIdx + J] := LPSource[SourceIdx + J];
Inc(SourceIdx, LCharsToCopy);
Inc(DestIdx, LCharsToCopy);
end
else
begin
Move(LPSource[SourceIdx], LPResult[DestIdx], LCharsToCopy * SizeOf(Char));
Inc(SourceIdx, LCharsToCopy);
Inc(DestIdx, LCharsToCopy);
end;
end;
Move(LPNewPattern^, LPResult[DestIdx], LenNP * SizeOf(Char));
Inc(DestIdx, LenNP);
Inc(SourceIdx, LenOP);
end;
LCharsToCopy := LenS - SourceIdx;
if LCharsToCopy > 0 then
Move(LPSource[SourceIdx], LPResult[DestIdx], LCharsToCopy * SizeOf(Char));
end;
end
else
Result := Source;
end;
end;
Ben olsam daha basit bir fonksiyon yazardım (ki benzerlerini yazmışlığım var, ama bunu şimdi yazdım ):
function TurkceBuyut(const AStr: string): string;
var
C, Ch: Char;
begin
Result := '';
for C in AStr do
begin
case C of
'i': Ch := 'İ';
'ı': Ch := 'I';
'ğ': Ch := 'Ğ';
'ü': Ch := 'Ü';
'ş': Ch := 'Ş';
'ö': Ch := 'Ö';
'ç': Ch := 'Ç';
else
Ch := UpCase( C );
end;
Result := Result + Ch;
end;
end;
İyi çalışmalar
Yorumları: 4.223
Konuları: 379
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 16.979 Üstad
Yorumsuz;
DelphiCan'dır!
Yorumları: 1.012
Konuları: 44
Kayıt Tarihi: 24-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.881 Uzman
22-01-2019, Saat: 09:56
(Son Düzenleme: 22-01-2019, Saat: 10:15, Düzenleyen: engerex.)
Eğer sadece tarih bilgileri büyültülecekse;
FormatSettings.LongMonthNames[1] := 'OCAK';
FormatSettings.ShortMonthNames[1] := 'OCA';
FormatSettings.ShortDayNames[1] := 'PAZ';
FormatSettings.LongDayNames[1] := 'PAZAR';
Dezavantajı : Sistem dilini gözardı ettik.
Yada bir kez sistem diline dikkat ederek;
FormatSettings.LongMonthNames[1] := FormatSettings.LongMonthNames[1].ToUpper;
ToUpper için Fesih Bey'e teşekkürler.
Yorumları: 833
Konuları: 141
Kayıt Tarihi: 07-12-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.077 Uzman
22-01-2019, Saat: 10:51
(Son Düzenleme: 22-01-2019, Saat: 10:52, Düzenleyen: adelphiforumz.)
Selamlar
@"Fesih ARSLAN" hocamın örneğini incelerken dikkatimi çeken bir yer oldu
System.Character içerisinde "function ToUpper(const S: string): string; overload; inline; deprecated 'Use TCharHelper';"
şeklinde ifadeler yer alıyor buradaki "Use TCharHelper" tam olarak neyi ifade ediyor bir açıklamamı yoksa bir referans mı bu konuda bilgisi olan var mı
eğer yanlış bilmiyorsam tanımlama içerisinde "deprecated" kullanımı bu yapının artık kullanılmadığını ve geriye dönük uyumluluk için ifade anlamına geliyordu
http://docwiki.embarcadero.com/Libraries...CharHelper
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz.
|