Witam, w tym artykule przedstawiłem procedury i funkcje z unitu SysUtils. Są to moje tłumaczenia z Help’a Delphi 7 razem z przykładowymi kodami źródłowymi(jeżeli takie nie występowały lub były niezbyt wyczerpujące, co zdarzało się bardzo często-sam je napisałem). Po znakach // następuje mój przypis.
Artykuł z czasem będzie rozwijany. W razie zauważonych błędów, sugestii-piszcie na forum, maila lub przesyłajcie PW.
Aktualnie znajdziecie tu opisy 52 procek/funkcji.
SysUtils
A
Abort
Składnia:
1 |
procedure Abort ; |
Opis:
Użyj Abort do ucieczki z uruchomionej ścieżki bez raportowania o błędach.
Abort generuje specjalny 'cichy wyjątek’ (EAbort), który działa jak każdy inny wyjątek, ale nie pokazuje komunikaty na końcu użytkownikowi. Abort przekierowuje wykonanie do ostatniego bloku wyjątków.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
var a : Integer ; begin try a := StrToIntDef(Edit1.Text) ; if a = 0 then Abort ; Edit1.Text := '0' ; // ta linijka nie zostanie wywołana, gdy: wystąpi błąd lub zmienna a będzie = 0 except ShowMessage('Błąd!') ; // dzięki procedurze Abort może wykonać się kod z bloku except nawet wtedy, gdy błąd jako taki nie wystąpi end ; end ; |
—
AddExitProc
Składnia:
1 |
procedure AddExitProc(Proc: TProcedure); |
Opis:
AddExitProc dodaje procedurę do listy wyjściowych procedur Delphi, przez co jest ona automatycznie wywoływana, gdy program kończy działanie. AddExitProc nie jest kompatybilna z pakietem CLX i jest przewidziana tylko dla wcześniejszej kompatybilności. Nie używaj AddExitProc w nowych aplikacjach.
// jako, że argumentem formalnym jest TProcedure, to nie możemy jako argument aktualny podać metodę, czyli funkcję składową klasy! Poza tym, procedura nie może zawierać żadnych argumentów.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
procedure PrzyZamknieciu ; begin MessageBox(0 , 'Procedura wywołana przy zamykaniu programu, dodana do listy za pomocą AddExitProc' , 'Zamykanie' , 0) ; end ; procedure TForm1.btnAddExitProcClick(Sender: TObject); begin AddExitProc(PrzyZamknieciu) ; end; |
—
AddTerminateProc
Składnia:
1 |
procedure AddTerminateProc(TermProc: TTerminateProc); |
Opis:
Użyj AddTerminateProc w kodzie Delphi aby dodać procedurę, która jest wywoływana gdy aplikacja ma zakończyć działanie. Biblioteka ładowana dynamicznie wywołuje wszystkie końcowe procedury przed zamknięciem aplikacji. Dołaczona końcowa procedura (TermProc) powinna zwracać prawde jeśli aplikacja możę zostać bezpiecznie zamknięta lub fałsz gdy aplikacja nie może by bezpiecznie zamknięta. Jeżeli którakolwiek z końcowych procedur zwróci fałsz, aplikacja nie zostanie zamknięta.
// TTerminataProc jest to funkcja, która nie przyjmuje żadnych argumentów, a zwraca wartość typu Boolean; podobnie jak wyżej w procedurze AddExitProc, w AddTerminateProc nie można jako argument podać metodę, czyli procedurę/funkcję składową jakiejś klasy.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function FunkcjaKonczaca : Boolean ; begin // program zostanie zamknięty jeśli Result = true Result := true ; // w przeciwnym przypadku-nie end ; procedure TForm1.btnAddTerminateProcClick(Sender: TObject); begin AddTerminateProc(FunkcjaKonczaca) ; end; |
—
AdjustLineBreaks
Składnia:
1 |
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle = tlbsCRLF): string; |
Opis:
AdjustLineBreaks zwraca string z jego znakami kończącymi linię przystosowanymi do danego typu.
S jest stringiem do przekonwertowania.
Styl wskazuje na to, czy znaki kończące linię powinny wszystkie być w stylu Windows’owym-dwa znaki: powrót karetki(Carriage Return) oraz nowa linia(LineFeed) (tlbsCRLF), lub stylu Linux’owym-z pojedynczym znakiem nowej linii-LineFeed (tlbsLF). Jeżeli Styl jest pominięty, używany jest styl dla kompilowanego obiektu.
Przykład:
1 2 3 4 5 6 7 8 |
// zmieniamy na styl Windows’owy, czyli z dwma znakami oznaczającymi koniec linii Memo1.Text := AdjustLineBreaks(Memo1.Text , tlbsCRLF) ; // zmieniamy na styl Linux’owy, czyli z jednym znakiem oznaczającym koniec linii Memo1.Text := AdjustLineBreaks(Memo1.Text , tlbsLF) ; |
—
AllocMem
Składnia:
1 |
function AllocMem(Size: Cardinal): Pointer; |
Opis:
AllocMem alokuje blok o danym rozmiarze na stercie. Każdy bajt w zaalokowanym buforze jest wypełniany zerem. Aby zwolnić bufor, użyj FreeMem.
Jeżeli nie ma wystarczającej pamięci potrzebnej do zaalokowania pamięci, generowany jest wyjątek EOutOfMemory.
Uwaga: Jeżeli pamięć nie musi być inicjalizowana zerem, w zamian wydajniejszym jest użycie GetMem.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
type TRec = record abc : Integer ; Tekst : String[10] ; end ; var P : ^TRec ; begin // na stercie zaalokowana jest pamieć o wielkości rekordu TRec, na które to miejsce // pokazuje nasz wskaźnik; pamięć ta jest wstępnie inicjalizowana zerami P := AllocMem(SizeOf(TRec)) ; P^.abc := 10 ; P^.Tekst := 'tekst' ; ShowMessage(P^.Tekst) ; FreeMem(P) ; end; |
—
AnsiCompareFileName
Składnia:
1 |
function AnsiCompareFileName(const S1, S2: string): Integer; |
Opis:
AnsiCompareFileName porównuje dwa stringi. Operacja porównania kontrolowana jest przez ustawienia regionalne. Nie jest brana pod uwagę wielkość liter w Windows’ie, a pod Linux’em-tak.
Zwracana wartość równa jest:
1 2 3 4 5 6 7 8 |
Warunek Zwracana wartość S1 > S2 > 0 S1 < S2 < 0 S1 = S2 = 0 |
AnsiCompareFileName jest identyczne jak AnsiCompareText w Windows.
Pod Linux, AnsiCompareFileName jest identyczne jak AnsiCompareStr.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var i : Integer ; begin i := AnsiCompareStr(EdtPorownaj1.Text , EdtPorownaj2.Text) ; if i = 0 then LabelWynik.Caption := '0, czyli oba takie same' else if i > 0 then LabelWynik.Caption := '>0, czyli 1. większy' else if i < 0 then LabelWynik.Caption := '<0, czyli 2. większy' ; // jeżeli w pierwszym Editcie będzie abC a w drugim ABc, to funkcja zwróci wartość 0-czyli takie same, gdyż nie są brane pod uwagę wielkości liter, o czym była mowa w opisie; na czym tak w zasadzie polega to porównywanie? Po prostu, jeżeli kod ASCII w jednym stringu jest większy od kodu ASCII z drugiego, to ten pierwszy jest 'większy' |
—
AnsiCompareStr
Składnia:
1 |
function AnsiCompareStr(const S1, S2: string): Integer; |
Opis:
AnsiCompareStr porównuje S1 z S2, biorąc pod uwagę wielkość liter. Operacja porównania kontrolowana jest przez ustawienia regionalne.
Zwracana wartość równa jest:
1 2 3 4 5 6 7 8 |
Warunek Zwracana wartość S1 > S2 > 0 S1 < S2 < 0 S1 = S2 = 0 |
Uwaga: Większość ustawień regionalnych uznaje małe litery za mniejsze niż odpowiednie wielkie litery. Jest to kontrast w stosunku do porządku ASCII, w którym małe litery mają kody ASCII większe od wielkich liter. Z tego powodu, wstawienie do S1 ‘a’ i do S2 ‘A’ powoduje, że AnsiCompareStr zwraca wartość mniejszą niż zero, podczas gdy CompareStr, z takimi samymi argumentami, zwraca wartość większą niż zero.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var i : Integer ; begin i := AnsiCompareStr(EdtPorownaj1.Text , EdtPorownaj2.Text) ; if i = 0 then LabelWynik.Caption := '0, czyli oba takie same' else if i > 0 then LabelWynik.Caption := '>0, czyli 1. większy' else if i < 0 then LabelWynik.Caption := '<0, czyli 2. większy' ; // jeżeli w pierwszym Editcie będzie abC a w drugim ABc, // to funkcja zwróci wartość <0-czyli drugi większy, gdyż są brane pod uwagę wielkości liter |
—
AnsiCompareText
Składnia:
1 |
function AnsiCompareText(const S1, S2: string): Integer; |
Opis:
AnsiCompareText porównuje S1 z S2 nie biorąc pod uwagę wielkości liter. Operacja porównania kontrolowana jest przez ustawienia regionalne. AnsiCompareText zwraca wartość mniejszą niż 0 jeżeli S1 < S2, wartość większą niż 0 jeżeli S1 > S2 i 0 gdy S1 = S2.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var i : Integer ; begin i := AnsiCompareText(EdtPorownaj1.Text , EdtPorownaj2.Text) ; if i = 0 then LabelWynik.Caption := '0, czyli oba takie same' else if i > 0 then LabelWynik.Caption := '>0, czyli 1. większy' else if i < 0 then LabelWynik.Caption := '<0, czyli 2. większy' ; // AnsiCompareFileName = AnsiCompareText w Windows |
—
AnsiDequotedStr
Składnia:
1 |
function AnsiDequotedStr(const S: string; AQuote: Char): string; |
Opis: małe problemy z tą funkcją…
—
AnsiLastChar
Składnia:
1 |
function AnsiLastChar(const S: string): PChar; |
Opis:
Użyj AnsiLastChar, aby otrzymać ostatni znak w łańcuchu tekstowym. Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 |
Label1.Caption := AnsiLastChar(Edit1.Text) ; // jeśli jak parametr wyślemy abc to zostanie zwrócone c |
—
AnsiLowerCase
Składnia:
1 |
function AnsiLowerCase(const S: string): string; |
Opis:
AnsiLowerCase zwraca łańcuch, który jest kopią przesłanego łańcucha z zamienionymi wszystkimi literami na małe. Konwersja używa ustawień regionalnych. Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 |
Label1.Caption := AnsiLowerCase(Edit1.Text) ; // gdy w Edit wpiszemy np. AbC to w Labelu pojawi się abc |
—
AnsiLowerCaseFileName
Składnia:
1 |
function AnsiLowerCaseFileName(const S: string): string; |
Opis:
AnsiLowerCaseFileName zwraca łańcuch, który jest kopią przesłanego łańcucha z zamienionymi wszystkimi literami na małe. Konwersja używa ustawień regionalnych. Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
W Windows’ie, AnsiLowerCaseFileName wspomaga konwersję na małe litery w charakterystycznych nazwach w regionach Azji (Zenkaku).
W Linux’ie lub ustawieniach regionalnych, które nie używają wielobajtowego systemu znaków (MBCS), AnsiLowerCaseFileName jest identyczne jak AnsiLowerCase.
Przykład:
1 |
Label1.Caption := AnsiLowerCaseFileName(Edit1.Text) ; |
—
AnsiPos
Składnia:
1 |
function AnsiPos(const Substr, S: string): Integer; |
Opis:
Użyj AnsiPos aby otrzymać pozycję parametru Substr w łańcuchu S. Na przykład, jeżeli Substr to łańcuch „AB” i S to „ABCDE”, AnsiPos zwróci 1. Jeżeli Substr nie występuje w S, AnsiPos zwraca 0.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var w : Integer ; begin w := AnsiPos(Edit1.Text , Edit2.Text) ; case w of 0 : Label1.Caption := '0, czyli tekst z 2. Edita nie znajduje się w 1.' else Label1.Caption := 'Tekst z 2. Edita znajduje się w drugim Editcie na pozycji: ' + IntToStr(w) ; end ; end ; |
—
AnsiQuotedStr
Składnia:
1 |
function AnsiQuotedStr(const S: string; Quote: Char): string; |
Opis:
Użyj AnsiQuotedStr aby przekonwertować łańcuch tekstowy (S) do cytowanego łańcucha, używającego przekazany znak Quote. Znak Quote jest wstawiany na początek i koniec łańcucha S oraz każdy znak Quote w łańcuchu jest podwajany.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 |
Label1.Caption := AnsiQuotedStr(Edit1.Text , '''') ; // np. AnsiQuotedStr('ab'c' , '''') zwróci 'ab''c' |
—
AnsiSameStr
Składnia:
1 |
function AnsiSameStr(const S1, S2: string): Boolean; |
Opis:
AnsiSameStr porównuje S1 do S2, biorąc pod uwagę wielkość liter. Operacja porównania kontrolowana jest przez ustawienia regionalne. Zwracana wartość jest prawdą, jeśli łańcuchy są takie same, a fałszem w przeciwnym razie.
Przykład:
1 2 3 4 5 6 7 8 9 |
// dla parametrów AbC i aBc funkcja zwróci fałsz, a dla abc i abc-prawdę. case AnsiSameStr(Edit1.Text , Edit2.Text) of true : Label1.Caption := 'Oba takie same' ; false : Label1.Caption := 'Nie są takie same' ; end ; |
—
AnsiSameText
Składnia:
1 |
function AnsiSameText(const S1, S2: string): Boolean; |
Opis:
AnsiSameText porównuje S1 do S2, nie biorąc pod uwagę wielkości liter. Operacja porównania kontrolowana jest przez ustawienia regionalne. Zwracana wartość jest prawdą, jeśli łańcuchy są takie same, a fałszem w przeciwnym razie.
Przykład:
1 2 3 4 5 6 7 8 9 |
// dla parametrów AbC i aBc funkcja zwróci prawdę case AnsiSameText(Edit1.Text , Edit2.Text) of true : Label1.Caption := 'Oba takie same' ; false : Label1.Caption := 'Nie są takie same' ; end ; |
—
AnsiStrComp
Składnia:
1 |
function AnsiStrComp(S1, S2: PChar): Integer; |
Opis:
AnsiStrComp porównuje S1 do S2, biorąc pod uwagę wielkość liter. Operacja porównania kontrolowana jest przez ustawienia regionalne. Zwracana wartość równa jest:
Warunek Zwracana Wartość
1 2 3 4 5 6 7 8 |
Warunek Zwracana wartość S1 > S2 > 0 S1 < S2 < 0 S1 = S2 = 0 |
Uwaga: Większość ustawień regionalnych uznaje małe litery za mniejsze niż odpowiednie wielkie litery. Jest to kontrast w stosunku do porządku ASCII, w którym małe litery mają kody ASCII większe od wielkich liter.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var i : Integer ; begin i := AnsiStrComp(PChar(Edit1.Text) , PChar(Edit2.Text)) ; if i = 0 then Label1.Caption := '0, czyli oba takie same' else if i > 0 then Label1.Caption := '>0, czyli 1. większy' else if i < 0 then Label1.Caption := '<0, czyli 2. większy' ; // dla argumentów a i A zwróci wartość < 0, czyli drugi większy |
—
AnsiStrIComp
Składnia:
1 |
function AnsiStrIComp(S1, S2: PChar): Integer; |
Opis:
AnsiStrIComp porównuje S1 do S2 nie biorąc pod uwagę wielkości liter. Operacja porównania kontrolowana jest przez ustawienia regionalne. Zwracane wartości są takie same jak dla CompareStr.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var i : Integer ; begin i := AnsiStrIComp(PChar(EdtPos1.Text) , PChar(EdtPos2.Text)) ; if i = 0 then LLWynikPos.Caption := '0, czyli oba takie same' else if i > 0 then LLWynikPos.Caption := '>0, czyli 1. większy' else if i < 0 then LLWynikPos.Caption := '<0, czyli 2. większy' ; // dla argumentów a i A zwróci wartość = 0, czyli oba takie same |
—
AnsiStrLastChar
Składnia:
1 |
function AnsiStrLastChar(P: PChar): PChar; |
Opis:
Użyj AnsiStrLastChar, aby otrzymać wskaźnik to pełnego ostatniego znaku w niezerowym łańcuchu tekstowym. Podczas pracy z wielobajtowymi zbiorami znaków (MBCS), ostatni znak nie będzie taki sam jak ostatni znak gdy dwa ostatnie bajty reprezentują jeden dwubajtowy znak.
Przykład:
1 |
Label1.Caption := AnsiStrLastChar(PChar(Edit1.Text)) ; // dla parametru abc zwróci c |
—
AnsiStrLComp
Składnia:
1 |
function AnsiStrLComp(S1, S2: PChar; MaxLen: Cardinal): Integer; |
Opis:
AnsiStrLComp porównuje S1 do S2, biorąc pod uwagę wielkość liter. Jeżeli S1 lub S2 jest dłuższe niż MaxLen bajtów, AnsiStrLComp tylko porównuje pierwsze MaxLen bajtów. Operacja porównania kontrolowana jest przez ustawienia regionalne. Zwracana wartość równa jest:
1 2 3 4 5 6 7 8 |
Warunek Zwracana wartość S1 > S2 > 0 S1 < S2 < 0 S1 = S2 = 0 (aż do MaxLen znaków) |
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Uwaga: AnsiStrLComp może kontynuować porównywanie poza znak kończący jeżeli S1 i S2 są równe do znaku kończącego i znak kończący występuje przed MaxLen bajtów.
Uwaga: Większość ustawień regionalnych małe litery jako poprzedzające odpowiednie wielkie litery. Jest to kontrast w stosunku to szyku ASCII, w którym małe litery następują po wielkich literach.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var i : Integer ; begin i := AnsiStrLComp(PChar(EdtPos1.Text) , PChar(EdtPos2.Text) , 3) ; if i = 0 then LLWynikPos.Caption := '0, czyli oba takie same' else if i > 0 then LLWynikPos.Caption := '>0, czyli 1. większy' else if i < 0 then LLWynikPos.Caption := '<0, czyli 2. większy' ; // dla a i A zwróci > 0 czyli a większe od A |
—
AnsiStrLIComp
Składnia:
1 |
function AnsiStrLIComp(S1, S2: PChar; MaxLen: Cardinal): Integer; |
Opis:
AnsiStrLIComp porównuje S1 do S2, nie biorąc pod uwagę wielkości liter. Jeżeli S1 lub S2 jest dłuższe niż MaxLen bajtów, AnsiStrLIComp tylko porównuje pierwsze MaxLen bajtów. Operacja porównania kontrolowana jest przez ustawienia regionalne. Zwracana wartość równa jest:
1 2 3 4 5 6 7 8 |
Warunek Zwracana wartość S1 > S2 > 0 S1 < S2 < 0 S1 = S2 = 0 (aż do MaxLen znaków) |
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Uwaga: AnsiStrLIComp może kontynuować porównywanie poza znak kończący jeżeli S1 i S2 są równe do znaku kończącego i znak kończący występuje przed MaxLen bajtów.
[color=blue]// należy uważać z parametrem MaxLen – jeżeli nastąpi sytuacja opisane w powyższej uwadze, to możliwe że funkcja zwróci nieoczekiwany wynik, ponieważ za łańcuchami znajdują się losowe wartości, które mogą wpłynąć na wynik porównania.[/kolor]
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var i : Integer ; begin i := AnsiStrLIComp(PChar(EdtPos1.Text) , PChar(EdtPos2.Text) , 1) ; if i = 0 then LLWynikPos.Caption := '0, czyli oba takie same' else if i > 0 then LLWynikPos.Caption := '>0, czyli 1. większy' else if i < 0 then LLWynikPos.Caption := '<0, czyli 2. większy' ; // dla a i A zwróci = 0 czyli oba takie same |
—
AnsiStrLower
Składnia:
1 |
function AnsiStrLower(Str: PChar): PChar; |
Opis:
AnsiStrLower zwraca zakończony znakiem kończącym łańcuch tekstowy ze wszystkimi małymi literami. Konwersja używa regionalnych ustawień.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 2 3 |
Label1.Caption := AnsiStrLower(PChar(Edit1.Text)) ; // dla argumentu A zwróci a |
—
AnsiStrPos
Składnia:
1 |
function AnsiStrPos(Str, SubStr: PChar): PChar; |
Opis:
AnsiStrPos, aby otrzymać wskaźnik do pierwszego wystąpienie SubStr w Str. Jeżeli SubStr nie występuje w Str, AnsiStrPos zwraca nil.
W przeciwieństwie do funkcji StrPos, AnsiStrPos pracuje z wielobajtowymi zbiorami znaków (MBCS).
Przykład:
1 2 3 4 5 6 7 8 9 10 11 |
var Str : PChar ; begin Str := AnsiStrPos(PChar(Edit1.Text) , PChar(Edit2.Text)) ; if Str = nil then Label1.Caption := Edit2.Text + ' nie występuje w ' + Edit1.Text else Label1.Caption := Edit2.Text + ' występuje w ' + Edit1.Text |
—
AnsiStrRScan
Składnia:
1 |
function AnsiStrRScan(Str: PChar; Chr: Char): PChar; |
Opis:
Użyj AnsiStrRScan aby otrzymać wskaźnik do miejsca ostatniego wystąpienia Chr w Str. Jeżeli Chr nie występuje w Str, AnsiStrRScan zwróci nil. Znak kończący null jest postrzegany jako część łańcucha tekstowego.
W przeciwieństwie do funkcji StrRScan, AnsiStrRScan pracuje z wielobajtowymi zbiorami znaków (MBCS).
Przykład:
1 2 3 4 5 6 7 8 9 10 11 |
var P : PChar ; begin P := AnsiStrRScan(PChar(Edit1.Text) , Edit2.Text[1]) ; if P = nil then Label1.Caption := Edit2.Text + ' nie występuje w ' + Edit1.Text else LLWynikPos.Caption := Edit2.Text + ' występuje w ' + Edit1.Text ; |
—
AnsiStrScan
Składnia:
1 |
function AnsiStrScan(Str: PChar; Chr: Char): PChar; |
Opis:
Użyj AnsiStrScan aby otrzymać wskaźnik do miejsca ostatniego wystąpienia Chr w Str. Jeżeli Chr nie występuje w Str, AnsiStrScan zwróci nil. Znak kończący null jest postrzegany jako część łańcucha tekstowego.
W przeciwieństwie do funkcji StrScan, AnsiStrScan pracuje z wielobajtowymi zbiorami znaków (MBCS).
Przykład:
1 2 3 4 5 6 7 8 9 10 11 |
var P : PChar ; begin P := AnsiStrScan(PChar(EdtPos1.Text) , EdtPos2.Text[1]) ; if P = nil then LLWynikPos.Caption := EdtPos2.Text + ' nie występuje w ' + EdtPos1.Text else LLWynikPos.Caption := EdtPos2.Text + ' występuje w ' + EdtPos1.Text ; |
—
AnsiStrUpper
Składnia:
1 |
function AnsiStrUpper(Str: PChar): PChar; |
Opis:
AnsiStrUpper zwraca zakończony znakiem kończącym łańcuch tekstowy ze wszystkimi wielkimi literami. Konwersja używa ustawień regionalnych.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 |
Label1.Caption := AnsiStrUpper(PChar(Edit1.Text)) ; |
—
AnsiUpperCase
Składnia:
1 |
function AnsiUpperCase(const S: string): string; |
Opis:
AnsiUpperCase zwraca łańcuch, który jest kopią przesłanego łańcucha z zamienionymi wszystkimi literami na wielkie. Konwersja używa ustawień regionalnych.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
1 |
Label1.Caption := AnsiUpperCase(Edit1.Text) ; |
—
AnsiUpperCaseFileName
Składnia:
1 |
function AnsiUpperCaseFileName(const S: string): string; |
Opis:
AnsiUpperCaseFileName zwraca łańcuch, który jest kopią przesłanego łańcucha z zamienionymi wszystkimi literami na wielkie. Konwersja używa ustawień regionalnych.
W Windows’ie, AnsiLowerCaseFileName wspomaga konwersję na wielkie litery w charakterystycznych nazwach w regionach Azji (Zenkaku).
W Linux’ie lub ustawieniach regionalnych, które nie używają wielobajtowego systemu znaków (MBCS), AnsiUpperCaseFileName jest identyczne jak AnsiUpperCase.
Przykład:
1 |
Label1.Caption := AnsiUpperCaseFileName(Edit1.Text) ; |
—
AppendStr
Składnia:
1 |
procedure AppendStr(var Dest: string; const S: string); deprecated; |
Opis:
AppendStr dołącza S na koniec Dest. Jest ona przewidziana tylko dla wcześniejszej kompatybilności. W zamian używaj operatora +:
1 |
Dest := Dest + S ; |
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var S1 , S2 : String ; begin S1 := Edit1.Text ; S2 := Edit2.Text ; AppendStr(S1 , S2) ; Label1.Caption := S1 ; |
—
AssignStr
Składnia:
1 |
procedure AssignStr(var P: PString; const S: string); deprecated; |
Opis:
Przypisuje nowe zaalokowany łańcuch tekstowy do podanego wskaźnika.
Nie używaj AssignStr w nowych aplikacjach. Jest przewidziana tylko dla wcześniejszych kompatybilności.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var P : PString ; begin if Edit1.Text <> '' then begin New(P) ; AssignStr(P , Edit1.Text) ; Label1.Caption := P^ ; Dispose(P) ; end ; |
—
B
Beep
Składnia:
1 |
procedure Beep; |
Opis:
Beep generuje klasyczny odgłos wiadomości.
W Windos’ie, Beep uruchamia Windows API MessageBeep ;
W Linux’ie, aby zminimalizować zależności bibliotek w bibliotece uruchamianej dynamicznie, wersja Beep z SysUtils ma w Linux’ie ograniczoną funkcjonalność. W zamian, dla międzyplatformowych aplikacji GUI, używaj wersji Beep z QControls
Przykład:
1 |
Beep ; |
—-
BoolToStr
Składnia:
1 |
function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string; |
Opis:
BoolToStr konwertuje podaną wartość Boolean do łańcucha tekstowego:
1 2 3 4 5 6 7 8 9 10 |
Wartoś B Wartość UseBoolStrs Wartość zwracanego stringu true false '-1' true true Pierwszy string w TrueBoolStrs (domyślnie 'TRUE'); false false '0' false true Pierwszy string w FalseBoolStrs (domyślnie 'FALSE'); |
Przykład:
1 2 3 4 5 6 7 8 9 |
var B : Boolean ; begin B := true ; Label1.Caption := BoolToStr(B , true) ; // w labelu pojawi sie 'True' |
—
ByteToCharIndex
Składnia:
1 |
function ByteToCharIndex(const S: string; Index: Integer): Integer; |
Opis:
Użyj ByteToCharIndex dowiedzieć się, jaki znak mieści się w poszczególnym bajcie w łańcuchu tekstowym, gdzie 1 oznacza pierwszy bajt, 2 drugi itd. Jeżeli parametr Index oznacza bajt, który nie występuje w AnsiString (Index < 0 lub Index > Length(S)), BytoToCharIndex zwraca 0.
Jeżeli system nie używa wielobajtowego systemu znaków (MBCS), ByteToCharIndex zwraca po prostu wartość Index’u, ponieważ występuje korespondencja 1:1 pomiędzy bajtami i znakami. W przeciwnym wypadku, ByteToCharIndex zwraca pozycję znaku, gdzie 1 oznacza pierwszy znak, 2 drugi itd.
Dla przykładu, jeżeli AnsiString zawiera dwa znaki, pojedynczo-bajtowy znak, po którym następuje dwu bajtowy znak, toByteToCharIndex zwraca 1 gdzie Index równy jest 1, zwraca 2, jeżeli Index równy jest 2 lub 3 lub zwraca 0 dla każdej innej wartości.
Przykład:
1 2 3 4 5 6 7 8 9 |
var S : String ; begin S := 'abc' ; Label1.Caption := IntToStr(ByteToCharIndex(S , 2)) ; // zwróci 2 |
—
ByteToCharLen
Składnia:
1 |
function ByteToCharLen(const S: string; MaxLen: Integer): Integer; |
Opis:
Użyj ByteToCharLen aby otrzymać liczbę znaków reprezentowaną przez część łańcucha tekstowego. ByteToCharLen liczy znaki dopóki nie osiągnie MaxLen bajtów lub końca łańcucha.
Podczas pracy z wielobajtowym systemem znaków (MBCS), wartość zwracana przez ByteToCharLen może być mniejsza niż MaxLen lub długość łanucha.
Uwaga: ByteToCharLen będzie liczyć częściowo literę, jeżeli wystąpi w ostatnim z pierwszych MaxLen bajtów.
Przykład:
1 |
Label1.Caption := IntToStr(ByteToCharLen(EdtLen.Text , 5)) ; |
—
ByteType
Składnia:
1 |
function ByteType(const S: string; Index: Integer): TMbcsByteType; |
Opis:
Użyj ByteType, aby dowiedzieć się czy dany bajt w łancuchu tekstowym jest jednobajtowym znakiem, pierwszym bajtem wielobajtowego znaku lub jednym z następnych bajtów wielobajtowego znaku.
AnsiString jest łańcuchem tekstowym zawierającym bajt, o który pytasz.
Index identyfikuje bajt, dla którego chcesz poznać typ bajtu. Bajty są numerowane od 1.
Jeżeli system nie używa wielobajtowego systemu znaków (MBCS), ByteType zwraca zawsze mbSingleByte. W przeciwnym razie, ByteType zwraca mbSingleByte, jeżeli bajt, na który wskazuje kompletny znak z S, mbLeadByte, jeżeli reprezentuje pierwszy bajt dwubajtowego
znaku lub mbTrailByte, jeżeli reprezentuje kolejny bajt wielobajtowego znaku.
Uwaga: Nie wykonywane jest sprawdzenie, czy Index jest mniejszy niż długość S. Jest to obowiązek użytkownika. aby zapewnić, że Index nie jest poza zakresem.
Przykład:
1 2 3 4 5 6 7 8 9 |
case ByteType(Edit1.Text , 3) of mbSingleByte : Label1.Caption := 'W 3 bajcie znajduje się jednobajtowy znak.' ; mbLeadByte : Label1.Caption := 'W 3 bajcie znajduje początek wielobajtowego znaku.' ; mbTrailByte : Label1.Caption := 'W 3 bajcie znajduje się część wielobajtowego znaku.' ; end ; |
—
C
CallTerminateProcs
Składnia:
1 |
function CallTerminateProcs: Boolean; |
Opis:
CallTerminateProces jest wywoływana wewnętrznie, gdy aplikacji ma zostać zamknięta. Zwraca prawdę (true) tylko, jeżeli wszystkie funkcje z listy procedury zakończającej aplikacji zwrócą prawdę. Nie używaj tej funkcji bezpośrednio. Jest ona wywoływana automatycznie w aplikacji Delphi.
—
ChangeFileExt
Składnia:
1 |
function ChangeFileExt(const FileName, Extension: string): string; |
Opis:
ChangeFileExt zmienia rozszerzenie z nazwy pliku przesyłanej w parametrze FileName, do rozszerzenia podanego w Extension. Extension oznacza nowe rozszerzenie, zawierające kropkę na początku.
ChangeFileExt nie zmienia nazwy aktualnego pliku, lecz tworzy nowy łańcuch tekstowy z nowym rozszerzeniem.
Uwaga: Ta funkcja wspomaga wielobajtowe zbiory znaków (MBCS).
Przykład:
Ten przykład konwertuje podaną ikonę do bitmapy. Aby uruchomić ten przykład, dodaj image, przycisk oraz OpenDialog na formę. Nazwij button ConvertIcon2Bitmap oraz dodaj następujący kod jako kod zdarzenia OnClick przycisku:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
procedure TForm1.ConvertIcon2BitmapClick(Sender: TObject); var s : string; Icon: TIcon; begin OpenDialog1.DefaultExt := '.ICO'; OpenDialog1.Filter := 'icons (*.ico)|*.ICO'; OpenDialog1.Options := [ofOverwritePrompt, ofFileMustExist, ofHideReadOnly ]; if OpenDialog1.Execute then begin Icon := TIcon.Create; try Icon.Loadfromfile(OpenDialog1.FileName); s:= ChangeFileExt(OpenDialog1.FileName,'.BMP'); Image1.Width := Icon.Width; Image1.Height := Icon.Height; Image1.Canvas.Draw(0,0,Icon); Image1.Picture.SaveToFile(s); ShowMessage(OpenDialog1.FileName + ' Saved to ' + s); finally Icon.Free; end; end; end; |
—
CharLength
Składnia:
1 |
function CharLength(const S: String; Index: Integer): Integer; |
Opis:
Użyj CharLength, aby otrzymać rozmiar w bajtach znaku znajdującego się na pozycji Index w S.
Jeżeli system nie używa wielobajtowego systemu znaków (MBCS), CharLengt zawsze zwraca 1.
Przykład:
1 |
Label1.Caption := 'Rozmiar w bajtach trzeciego znaku z Edit to: ' + IntToStr(CharLength(Edit1.Text , 3)) ; |
—
CharToByteIndex
Składnia:
1 |
function CharToByteIndex(const S: string; Index: Integer): Integer; |
Opis:
Użyj CharToByteIndex, aby otrzymać pozycję w bajtach znaku na podanej pozycji w łańcuchu S, gdzie 1 oznacza pierwszy znak, 2 drugi itd. CharToByteIndex zwraca 0, jeżeli Index jest poza zakresem (Index <= 0 lub Index > ilość znaków w S). Jeżeli parametr Index oznacza dwubajtowy znak, CharByteToIndex zwraca pozycje pierwszego bajtu.
Jeżeli system nie używa wielobajtowego systemu znaków (MBCS), CharToByteIndex zwraca wartość Index, ponieważ stosunek między ilością bajtów a znaków wynosi 1:1.
Przykład:
1 2 3 |
if CharToByteIndex(Edit1.Text , 3) = 0 then Label1.Caption := 'Index poza zakresem.' else Label1.Caption := 'Znak na 3. pozycji zajmuje ' + IntToStr(CharToByteIndex(Edit1.Text , 3)) + '. bajt.' ; |
—
CharToByteLen
Składnia:
1 |
function CharToByteLen(const S: string; MaxLen: Integer): Integer; |
Opis:
Użyj CharToByteLen, aby przekonwertować długość łańcucha tekstowego w znakach do odpowiadającej długości wyrażonej w bajtach. CharToByteLen zwraca liczbę bajtów potrzebnych dla MaxLen znaków w S. Jeżeli S zawiera mniej niż MaxLen znaków, CharToByteLen zwraca rozmiar w bajtach łańcucha S.
Jeżeli system nie używa wielobajtowego systemu znaków (MBCS), CharToByteLen zwraca długość S lub MaxLen, którakolwiek jest mniejsza.
Przykład:
1 |
Label1.Caption := 'Długość w bajtach trzech pierwszych znaków z Edit to: ' + IntToStr(CharToByteLen(Edit1.Text , 3)) ; |
—
CompareMem
Składnia:
1 |
function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; assembler; |
Opis:
CompareMem wykonuje binarne porównanie Length bajtów pamięci wskazywanej przez P1 do P2. CompareMem zwraca prawdę, jeżeli pamięć, do której odnosi się P1, jest identyczna do wskazywanej przez P2.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
type { jeżeli podalibyśmy np. String[10] a wpisalibyśmy tylko 5 liter, to funkcja zwróciłaby wartość false, ponieważ na dalszych miejscach w stringu znajdowałyby się ‘śmieci’, przypadkowe wartości, przez co porównywane łańcuchy uznane zostałyby za różne } TRec = record Tekst : String[3] ; Int : Integer ; end ; PRec = ^TRec ; var P1 , P2 : PRec ; begin New(P1) ; New(P2) ; P1^.Tekst := 'abc' ; P1^.Int := 12345 ; P2^.Tekst := 'abc' ; P2^.Int := 12345 ; if CompareMem(P1 , P2 , SizeOf(TRec)) then Label7.Caption := 'Są takie same.' else Label7.Caption := 'Nie są takie same.' ; |
—
CompareStr
Składnia:
1 |
function CompareStr(const S1, S2: string): Integer; |
Opis:
CompareStr porównuje S1 do S2, biorąc pod uwagę wielkość liter. Zwracana wartość jest mniejsza od 0, jeżeli S1 jest mniejsze niż S2, 0 jeżeli S1 jest równorzędne do S2 lub wartość większą niż 0, jeżeli S1 jest większe od S2. Operacja porównania jest oparta na 8-bitowej porządkowej wartości każdego znaku i nie oddziałują na nią bieżące ustawienia lokalne.
Przykład:
1 2 3 4 5 6 7 8 9 |
if CompareStr(Edit1.Text , Edit2.Text) < 0 then Label1.Caption := 'Pierwszy mniejszy.' else if CompareStr(Edit1.Text , Edit2.Text) = 0 then Label1.Caption := 'Takie same' else Label1.Caption := 'Pierwszy większy.' ; |
—
CompareText
Składnia:
1 |
function CompareText(const S1, S2: string): Integer; |
Opis:
CompareText porównuje S1 do S2 i zwraca 0, jeżeli są takie same. Jeżeli S1 jest większe niż S2, CompareText zwraca wartość całkowitą większą od 0. Jeżeli S1 jest mniejsza od S2, CompareText zwraca wartość całkowitą mniejszą od 0. CompareText nie bierze pod uwagę wielkości liter i nie zależy od ustawień regionalnych.
Przykład:
1 2 3 4 5 6 7 8 9 |
if CompareText(Edit1.Text , Edit2.Text) < 0 then Label1.Caption := 'Pierwszy mniejszy.' else if CompareText(Edit1.Text , Edit2.Text) = 0 then Label1.Caption := 'Takie same' else Label1.Caption := 'Pierwszy większy.' ; |
—
CreateDir
Składnia:
1 |
function CreateDir(const Dir: string): Boolean; |
Opis:
CreateDir tworzy nowy folder. Zwracana wartość jest prawdą (true) jeżeli utworzenie nowego folderu powiodło się, lub fałsz (false) jeżeli wystąpił błąd.
Przykład:
1 2 3 |
if CreateDir(Edit1.Text) then Label1.Caption := 'Utworzono nowy folder.' else Label1.Caption := 'Nie powiodła się próba utworzenia folderu.' ; |
—
CreateGUID
Składnia:
1 |
function CreateGUID(out Guid: TGUID): HResult; |
Opis:
CreateGUID ustawia Guid do nowo utworzonego Globalnego Unikalnego Identyfikatora.
Pod Windows’em, CreateGUID wywołuje funkcję Windows API CoCreateGUID
Pod Linux’em, CreateGUID wywołuje uuid_generate_time.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var G : TGUID ; begin case CreateGUID(G) of S_OK : Label1.Caption := 'Udało się utworzyć identyfikator.' ; S_FALSE : Label1.Caption := 'Nie udało się utworzyć identyfikatora.' ; end ; |
—
Currency and date/time formatting variables
Składnia:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
var CurrencyString: string; var CurrencyFormat: Byte; var NegCurrFormat: Byte; var ThousandSeparator: Char; var DecimalSeparator: Char; var CurrencyDecimals: Byte; var DateSeparator: Char; var ShortDateFormat: string; var LongDateFormat: string; var TimeSeparator: Char; var TimeAMString: string; var TimePMString: string; var ShortTimeFormat: string; var LongTimeFormat: string; var ShortMonthNames: array[1..12] of string; var LongMonthNames: array[1..12] of string; var ShortDayNames: array[1..7] of string; var LongDayNames: array[1..7] of string; var SysLocale: TSysLocale; var EraNames: array[1..7] of string; var EraYearOffsets: array[1..7] of Integer; var TwoDigitYearCenturyWindow: Word = 50; var ListSeparator: Char; |
Opis:
Te zmienne dostarczają lokalizację informacji, które wykorzystują różne procedury/funkcje do formatowania oraz rozbijania liczb, dat oraz waluty. Są inicjalizowane automatycznie.
Uwaga: Procedury/funkcje, które odnoszą się do globalnych zmiennych nie są bezpieczne w wątkach. Każda proc/fun, która używa tych zmiennych jest bezpieczna w wątkach, ponieważ odnosi się do TFormatSettings zamiast do zmiennych globalnych.
W Windows’ie, wartości, używane do inicjalizacji tych zmiennych pobierane są z systemowego rejestru poprzez użycie funkcji GetLocaleInfo z Win32 API. Aplikacji CLX (niekonsolowe) automatycznie uaktualniają te zmienne formatujące w odpowiedzi na wiadomość WM_WININICHANGE.
W Linux’ie, zmienne te są automatycznie inicjalizowane wartościami z lokalnych definiujących plików.
Metoda UpdateFormatSettings zmiennej aplikacji pozwala lub nie na zmianę systemowych ustawień. Domyślna wartość to prawda (true). Ustaw tą właściwość na fałsz (false) aby uchronić system przed zmianą ustawień.
W Windos’ie, opis każdej zmiennej określa stała LOCALE_XXXX używana do pobrania wartości.
Stała Definicja
CurrencyString CurrencyString definiuje symbol (lub znaki) waluty używany w konwersjach z liczb zmiennoprzecinkowych do dziesiętnych.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_SCURRENCY.
CurrencyFormat CurrencyFormat definiuje znak waluty oraz seperacji używane w konwersjach liczb zmiennoprzecinkowych do dziesiętnych. Możliwymi wartościami są:
0 = $1 1 = 1$ 2 = $ 1 3 = 1 $
W Windows’ie, początkowa wartość jest pobierana z LOCALE_ICURRENCY.
NegCurrFormat NegCurrFormat definiuje format waluty używany w konwersjach liczb zmiennoprzecinkowych do dziesiętnych negatywnych liczb. Możliwymi wartościami są:
0 = ($1) 4 = (1$) 8 = -1 $ 12 = $ -1 1 = -$1 5 = -1$ 9 = -$ 1 13 = 1- $ 2 = $-1 6 = 1-$ 10 = 1 $- 14 = ($ 1) 3 = $1- 7 = 1$- 11 = $ 1- 15 = (1 $)
W Window’ie, początkowa wartość pobierana jest z LOCALE_INEGCURR.
ThousandSeparator ThousandSeparator jest znakiem używanym do oddzielania tysięcy w liczbach z więcej niż trzema cyframi po lewej stronie seperatora dziesiętnego. Wartość #0 sygnalizuje, że żaden separator tysięcy powinien być wyświetlany, nawet, jeżeli format łańcucha tekstowego wymaga tego.
W Windows’ie, początkowa wartość pobierana jest z LOCALE_STHOUSAND.
DecimalSeparator DecimalSeparator jest znakiem używanym do oddzielania części całkowitej od części ułamkowej liczby. Ta zmienna musi mieć wartość różną od #0.
W Windows’ie, początkowa wartość pobierana jest z LOCALE_SDECIMAL.
CurrencyDecimals CurrencyDecimals jest liczbą cyfr z prawej strony separatora dziesiętnego w kwocie pieniężnej.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_ICURRDIGITS.
DateSeparator DateSeparator jest znakiem używanym do oddzielenia części roku, miesiąca i dnia daty.
W Windows’ie, początkowa wartość pobierana jest z LOCATE_SDATE.
ShortDateFormat ShortDateFormat stringiem formatującym używanym do konwertowania daty do jej krótszej wersji, wygodniejszej do edytowania. Po kompletne informacje o formatach daty i czasu, zajrzyj do stringów formatujących Date-Time. Krótka forma daty powinna zawierać jedynie separator znaków oraz specyfikatorów formatu m, mm, d, dd, yy oraz yyyy.
W Windows’ie, początkowa wartość pobierana jest z LOCALE_SSHORTDATE.
LongDateFormat LongDateFormat jest stringiem formatującym używany do konwertowania daty do dłuższej postaci, odpowiedniej do wyświetlania, ale nie do edycji. Po kompletne informacje o formatach daty i czasu, zajrzyj do stringów formatujących Date-Time.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_SLONGDATE.
TimeSeparator TimeSeparator jest znakiem używanym do odseparowania godziny, minuty i sekund w wartości czasu.
W Windows’i, wartość początkowa pobierana jest z LOCALE_STIME.
TimeAMString TimeAMString jest przyrostkiem używanym w wartościach czasu pomiędzy 00:00 a 11.59 w 12-godzinnym formacie czasu.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_S1159.
TimePMString TimePMString jest przyrostkiem używanym w wartościach czasu pomiędzy 12:00 a 23.59 w 12-godzinnym formacie czasu.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_S2359.
ShortTimeFormat ShortTimeFormat jest stringiem formatującym używanym do konwertowania wartości czasu do krótszej formy, zawierającej jedynie godziny i minuty.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_ITIME oraz LOCALE_ITLZERO.
LongTimeFormat LongTimeFormat jest stringiem formatującym używanym do konwertowania wartości czasu do stringu zawierającego godziny, minuty i sekundy.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_ITIME oraz LOCALE_ITLZERO.
ShortMonthNames ShortMonthNames jest tablicą stringów zawierających krótkie nazwy miesięcy. Format mmm w stringu formatującym przekazanym do FormatDateTime powoduje uwzględnienie krótkiej nazwy.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_SABBREVMONTHNAME.
LongMonthNames LongMonthNames jest tablicą stringów zawierających długie nazwy miesięcy. Format mmmm w stringu formatującym przekazanym do FormatDateTime powoduje uwzględnienie długiej nazwy miesiąca.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_SMONTHNAME.
ShortDayNames ShortDayNames jest tablicą stringów zawierających krótkie nazwy dni tygodnia. Format ddd w stringu formatującym przekazanym do FormatDateTime powoduje uwzględnienie krótkiej nazwy dnia.
W Windows’ie, wartość domyślna pobierana jest z LOCALE_SABBREVDAYNAME.
LongDayNames LongDayNames jest tablicą stringów zawierających długie nazwy dni tygodnia. Format dddd w stringu formatującym przekazanym do FormatDateTime powoduje uwzględnienie długiej nazwy dnia.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_SDAYNAME.
SysLocale Wskazuje wartość domyślną używaną przez FormatDateTime do intepretowania dat.
EraNames Kontroluje funkcję DateTimeToStr (dla regionów Wschodniej Azji).
EraYearOffsets Kontroluje funkcję DateTimeToStr (dla regionów Wschodniej Azji).
ListSeparator Znak używany do odseparowania pozycji w liście.
W Windows’ie, wartość początkowa pobierana jest z LOCALE_SLIST.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 |
procedure TForm1.Button1Click(Sender: TObject); begin DateSeparator := '-'; ShortDateFormat := 'm/d/yyyy'; Label1.Caption := DateToStr(Date); end; |
—
CurrentYear
Składnia:
1 |
function CurrentYear: Word; |
Opis:
CurrentYear zwraca rok według kalendarza gregoriańskiego. Zwrócona wartość jest rokiem zapisanym za pomocą czterech cyfr.
Przykład:
1 |
Label1.Caption := IntToStr(CurrentYear) ; |
—
CurrToStr
Składnia:
1 2 3 4 |
function CurrToStr(Value: Currency): string; overload; function CurrToStr(Value: Currency; const FormatSettings: TFormatSettings): string; overload; |
Opis:
CurrToStr konwertuje wartość Currency przekazaną w Value to jej reprezentacji w postaci stringu. Konwersja używa zasad zmienno przecinkowych konwersji ffGeneral.
Pierwsza wersja CurrToStr nie jest bezpieczna w wątkach, ponieważ używa informacji zawartych w globalnych funkcjach. Druga wersja CurrToStr, która jest bezpieczna w wątkach, odnosi się do informacji zawartych w parametrze FormatSettings. Przed wywołaniem wersja CurrToStr bezpiecznej w wątkach, musisz wypełnić FormatSettings informacjami. Aby wypełnić FormatSettings zbiorem domyślnych lokalnych wartości, użyj GetLocaleFormatSettings.
—
CurrToStrF
Składnia:
1 2 3 |
function CurrToStrF(Value: Currency; Format: TFloatFormat; Digits: Integer): string; overload; function CurrToStrF(Value: Currency; Format: TFloatFormat; Digits: Integer; const FormatSettings: TFormatSettings): string; overload; |
Opis:
CurrToStrF konwertuje wartość Currency przekazaną w parametrze Value do jej reprezentacji w postaci stringu używając przekazanych reguł formatowania. Wywołanie CurrToStrF powoduje wywołanie FloatToStrF z ustawioną precyzją na 19 cyfr.
Pierwsza wersja CurrToStrF nie jest bezpieczna w wątkach, ponieważ używa informacji zawartych w globalnych zmiennych. Druga wersja CurrToStrF, która jest bezpieczna w wątkach, odwołuje się do informacji zawartych w parametrze FormatSettings. Przed wywołaniem wersji CurrToStr bezpiecznej w wątkach, musisz wypełnić FormatSettings informacjami. Aby wypełnić FormatSettings zbiorem domyślnych lokalnych wartości, użyj GetLocaleFormatSettings.
—
D
Date
Składnia:
1 |
function Date: TDateTime; |
Opis:
Użyj funkcji Date aby otrzymać aktualną lokalną datę w postaci wartości TDateTime.
Przykład:
1 2 3 4 5 6 7 |
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := ‘Dzisiaj jest ' + DateToStr(Date); end; |
—
DateDelta
Składnia:
1 |
const DateDelta = 693594; |
Opis:
DateDelta jest liczbą dni pomiędzy 1 stycznia, 0001, i 31 grudnia, 1899 (693594). Ta wartość jest przydatna podczas konwertowania wartości z datą i czasem TDateTime do TTimeStamp.
—
DateTimeToFileDate
Składnia:
1 |
function DateTimeToFileDate(DateTime: TDateTime): Integer; |
Opis:
Użyj DateTimeToFileDate do konwersji wartości TDateTime, która reprezentuje wartości czasu i daty używanej przez CLX, do miary czasu systemu operacyjnego.
Dla przykładu, użyj DateTimeToFileDate do konwersji wartości TDateTime do formatu, który może być użyty jako parametr Age w FileSetDate. Możesz także potrzebować DateTimeToFileDate, aby przekonwertować TDateTime by było kompatybilne z polem Time w TSearchRec, którego używają funkcje FindFirst oraz FindNext.
—
DateTimeToStr
Składnia:
1 2 3 |
function DateTimeToStr(DateTime: TDateTime): string; overload; function DateTimeToStr(DateTime: TDateTime; const FormatSettings: TFormatSettings): string; overload; |
Opis:
Funkcja ta konwertuje wartość DateTime do jej postaci w stringu. Pierwsza wersja DateTimeToStr nie jest bezpieczna w wątkach, ponieważ używa informacji zawartych w zmiennych globalnych. Druga wersja DateTimeToStr, która jest bezpieczna w wątkach, odwołuje się do informacji zawartych w parametrze FormatSettings. Przed wywołaniem wersji DateTimeToStr bezpiecznej w wątkach, musisz wypełnić FormatSettings informacjami. Aby wypełnić FormatSettings zbiorem domyślnych lokalnych wartości, użyj GetLocaleFormatSettings.
Przykład:]
1 2 3 |
// funkcja Now zwraca czas i datę w wartości typu TDateTime Label1.Caption := DateTimeToStr(Now) ; |