StrIncrement Fonksiyonu

Tanım


Herhangi bir karakter dizisini, sözlük mantığında bir sonraki değerini (artırmak) elde etmek için kullanılan fonksiyondur.  Fonksiyon kendisine verilen karakter sayısı kadar karakteri geri döner. 6 karakterlik bir karakter dizisini 7 karaktere kesinlikle çıkarmaz.


Artırım işlemi, belirli karakter setlerine, kendi içlerinde bir sonraki karakteri bulma mantığı ile uygulanır. Bu karakter setleri ise şunlardır:

Büyük harfler (A…Z). Türkçe büyük harfler (Ç,Ğ,İ,Ö,Ş,Ü) kapsam dışındadır.

Küçük harfler (a…z). Türkçe büyük harfler (ç,ğ,ı,ö,ş,ü) kapsam dışındadır.

Rakamlar (0…9).


Tanımlı karakter setlerine tabi olmayan; kapsam dışındaki tüm diğer karakterler artırım işleminde yok varsayılıp, geri dönüş değerinde kendilerini aynı pozisyonda olmak üzere korurlar.  


Artırma işlemi, dizinin son karakterinden itibaren başlar. Son karakter bulunduğu setdeki bir sonraki karaktere geçebiliyorsa, fonksiyon sadece son karakteri bir artırıp işlemini tamamlar. Eğer son karakter, kendi karakter setinde de son karakter ise, bu durumda bir önceki karaktere bakılır. Eğer bir önceki karkater de kendi karakter setindeki bir sonraki karaktere artırılabiliniyorsa, bir önceki karakter bir artırlır ve son karakter de kendi setindeki ilk karaktere çevrilir. Bu işlem herhangi bir karakter bir artırılıncaya kadar sürdürülür.

Kullanım Şekli


Değişken = Document.StrIncrement(KarakterDizisi)

Ana Nesne


Document (Doc) nesnesinin elemanıdır. Bir doküman nesnesi ile kullanılmak zorundadır.

Parametreler


Parametre

Açıklama

KarakterDizisi

Bir sonraki değeri elde edilmek istenen karakter dizisi (string, text). İçerisinde her türlü karakter olabilir.

Geri Dönen Değerler


Uzunluğu aynı olmak üzere yeni bir karakter dizisi geri dönülür. Bir değişkene atanmalıdır.


Hatırlatmalar


Eğer fonksiyona tabi olan karakter dizisindeki bütün karakterler; kendi karakter setindeki son karakter ise, bir sonraki değer hesaplanamayacağından, boş bilgi geri dönülür.

Fonksiyona giren karakter sayısı asla değişmez.

Türkçe karakterler kapsam dışındadır.

Boşluk karakteri (Space Bar), artırım işlemine tabi oluyorsa 0 (sıfır) olarak kabul edilir ve artırım sonucunda yerine “1” karakteri yazılır. Eğer artırıma tabi olmuyorsa boşluk olarak geri döner.

Örnek


Sub Makro1()

       Set Batch =  Doc.CreateSObject("BatchErrorMode")

       Doc.Msgbox "AAA009 karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("AAA009")

       Doc.Msgbox "AAA0-9 karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("AAA0-9")

        Doc.Msgbox "AAA09c karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("AAA09c")

       Doc.Msgbox "AAA09z karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("AAA09z")

       Doc.Msgbox "AAAŞ9z karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("AAŞ99z")

       Doc.Msgbox "aaa 8z karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("aaa 8z")

       Doc.Msgbox "aaa 9z karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("aaa 9z")

       Doc.Msgbox "zzzü9z karakter dizisinin bir sonraki değeri : " & Doc.StrIncrement("zzzü9z")

End Sub



Yukarıdaki örnekte 6 karakterlik değişik karakter dizilerinin bir sonraki değerleri istenmiştir. Örnek sonucu  aşağıdaki ekran görüntüsünde verilmiştir.


İlk satırdaki “AAA009” karakter dizisindeki son karakter, rakam setindedir. Son karakter “9”, setdeki son elaman olduğundan, bir önceki karakter olan “0” a bakılır. “0” kendi setinde bir sonraki elamana “1” e artırılabilir. Bu durumda “0” karakteri “1” e artırılırken, setindeki son karakter olan “9”, yine kendi setindeki birinci karakter “0” a çevrilir. Sonuç ilk 4 karakter aynı olmak üzere, sadece son iki karakter “10” a çevrilerek, “AAA010” karakteri elde edilir.


İkinci satırdaki, “AAA0-9” karakter dizisindeki sondan ikinci karakter olan “-“ karakteri kapsam dışındaki karakter setine tabi olduğundan, artırım işleminde bu karakter yok varsayılır ve bir önceki karakter olan “0” sıfıra bakılır.


Üçüncü satırdaki “AAA09c” karakter dizisinde ise son karakter küçük harf setindedir ve bir sonraki değeri bulunduğundan işlem son karakterde tamamlanmıştır.


Dördüncü satırdaki “AAA09z” karakter dizisindeki  son karakter küçük harf setinin son karakteri olduğundan, bir önceki karakter de işleme tabi tutulmuştur. Her iki karakterde kendi setlerine göre işleme tabi tutulmuşlardır.


Beşinci satırdaki “AAA99z” karakter dizisindeki  son üç karakter de kendi setlerinin son karakteri olduğundan, son dört karakter işleme tabi tutulmuştur.


Altıncı satırdaki, “AAAŞ9z” karakter dizisindeki sondan üçüncü karakter olan “Ş“ karakteri Türkçe karakter olduğundan, kapsam dışında tutulup artırım işleminde yok varsayılmıştır.


Yedinci satırdaki, “aaa 8z” karakter dizisindeki sondan üçüncü karakter olan “ “ boşluk karakteri, artırım işlemi kendisine gelmeden bittiğinden kapsam dışın karakter özelliğini koruyup yok varsayılmıştır.


Sekizinci satırdaki, “aaa 9z” karakter dizisindeki sondan üçüncü karakter olan “ “ boşluk karakteri, artırım işlemine tabi tutulmak zorundadır. Bu durumda kapsam dışındaki karakter özelliğni yitirip “0” sıfır gibi davranmış ve bir sonraki rakam olan “1” bire artırılmıştır.


Son satırdaki, “zzzü9z” karakter dizisindeki tüm karakterler kendi setlerindeki son karakterdir, Hiçbiri arttırılamayacağından dolayı, fonksiyon boş karakter disizi geri döner.




Paylaşım Makrosu