Jak użyć Memo.Lines.SaveToFile pod Androidem?

Jak użyć Memo.Lines.SaveToFile pod Androidem?
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Witam . Mam taki problem próbuje użyć czegoś takiego ale pod androidem, jak użyć czegoś takiego

Kopiuj
memo1.Lines.SaveToFile('c:\test.txt')

Chodzi mi o to co w nawiasach . Dla win32 spowoduje ze plik test.txt zostanie zapisane na dysku c, a jak to ma być pod androidem . Próbowałem

Kopiuj
memo1.Lines.SaveToFile('test.txt')

ale wywala błąd .

edytowany 2x, ostatnio: flowCRANE
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Witam .

Kopiuj
Memo1.Lines.SaveToFile(GetHomePath + '/test.txt') 

takie coś niby błędu nie wywala , ale nie wiem czy i gdzie zapisuje plik test.txt. Czy to może jest zapisane w jakimś ukrytym folderze ? Czy znajdę ten plik jeśli będę przeglądał zawartość telefonu z poziomu Windowsa (usb) ? Czy to będzie się zapisywać w pamięci wewnętrznej czy na karcie SD ?

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Wrzucaj kod w znaczniki kolorujące składnię. Więcej na ten temat tutaj – Formatowanie treści
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
2

Na pamięci wewnętrznej
Jak wejdziesz w menadżer plików to folder Android/data/%ID APKI%/files
aha jeżeli chodzi o urządzenie mobilne lepiej sprecyzuj z której funkcji GetHomePath chcesz skorzystać czyli napisz:
System.IOUtils.TPath.GetHomePath zamiast GetHomePath bo tak Delphi może przypadkiem użyć System.SysUtils.GetHomePath która nie jest zalecana dla aplikacji multiplatformowych.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Ok , poszło . Dziękuje . Mam jeszcze takie pytanie . Co ustawić w właściwościach formy żeby można ją przesuwać palcem po ekranie . tzn jeśli wysokość formy jest większa niż ekran telefonu to część jej jest nie widoczna bo jest poza ekranem .Czy takie przesuwanie palcem trzeba zrobić programowo czy jest do tego jakiś parametr w ustawieniach . Jesli programowo to co odpowiada za pozycje formy na ekranie telefonu . W win32 to jest np .left ale w formie androida tego nie ma ,

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
1

Od czego masz demka?
http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/FMX.ScrollableForm_Sample

Na ScrollBoxie umieść TLayout a na nim kontrolki to będziesz mógł przewijać.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

No właśnie na tej stronie wczoraj widziałem fajnie opisane wraz z graficznym opisem jak i co , ale nie widzę teraz tego . Historie przejrzałem i gdzieś wyparowała ta strona . . na razie tego > Na ScrollBoxie umieść TLayout a na nim kontrolki to będziesz mógł przewijać> nie kumam ale to może dlatego ze siedzę przy tym od rana . Jutro na świeży mózg to wezmę .

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Co tu do kumania w najprostszym wydaniu bierzesz jakiegoś ScrollBox'a np. TVertScrollBox (jeżeli chcesz tylko pionowo) ustawiasz mu Align -> Client na to rzucasz TLayout i ustawiasz sobie jego wielkość (niech sobie będzie wyższy od formy) na nim kładziesz i dopiero na nim kontrolki. Jak tak zrobisz to da się przewijać i będzie ok.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

:) Poszło ale ,,,,:) Mam na formie miedzy innymi grafikę i memo . Zauważyłem ze jak palec jest na grafice lub memo to nie da się przesunąć formy , poza tym chodzi tak jak trzeba . Jak palec jest na buttonie to tez chodzi ok .A jak teraz mogę przesunąć tą forme programowo ?. Wybacz moje pytania , i ze pytam o rzeczy które można sprawdzić samemu , ale problem w tym ze uruchomienie aplikacji na próbę w telefonie trwa u mnie ok 1.5 minuty , tak ze to czekanie mnie dobija. Całośc sprawdzam pod win32 ale niektóre rzeczy jak np to muszę sprawdzić w telefonie .

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Ale co chcesz programowo scrollować?
ScrollBox ma metodę ScrollBy ale chyba przydatniejsze jest scrollowanie aby dana kontrolka stała się widoczna (tutaj Edit1).

Kopiuj
VertScrollBox1.ViewportPosition := PointF(0, Layout1.Position.Y + Edit1.Position.Y); //1 param 0 bo interesuje nas tylko pionowo a drugie to proste wyliczenie pozycji kontrolki

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Witam . Możesz jeszcze mi napisać odpowiedniki tego:

Memo1.CaretPos := Point(x, y) ustawia kursor na pozycji x,y ,,, Tak robię w Delphi w aplikacjach pod win32 , Dla androida to wywala błąd .
Czy to memo1.Caret.Pos:=Point(x,y); jest odpowiednikiem tego? W takim przypadku współrzędne x i y nie są współrzędnymi znaków w memo ale chyba w pikselach. .

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
2
Kopiuj
  Memo1.CaretPosition:= TCaretPosition.Create(linia, pozycja); //liczone od 0
  Memo1.SetFocus; //jeżeli trzeba aktywować memo

aha do uses FMX.Memo.Types


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

A jak wstawić tekst w środek innego tekstu w wybrana pozycje ? robię tak:

Kopiuj
tablica1.CaretPosition:= TCaretPosition.Create(2,5);
tablica1.SelLength:=0;
tablica1.lines.SetText('tekst');

ale zawartość memo znika i dodany zostaje 'tekst' na pozycji 0,0.

Czy to ma zwracać pozycje kursora w memo:?

Kopiuj
tablica1.CaretPosition.pos,
tablica1.CaretPosition.Line
edytowany 1x, ostatnio: flowCRANE
flowCRANE
Wrzucaj kod w znaczniki kolorujące składnię, czyli ```delphi
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
2
Rabbit2 napisał(a):

A jak wstawić tekst w środek innego tekstu w wybrana pozycje ? robię tak:

Kopiuj
tablica1.CaretPosition:= TCaretPosition.Create(2,5);
tablica1.SelLength:=0;
tablica1.lines.SetText('tekst');

ale zawartość memo znika i dodany zostaje 'tekst' na pozycji 0,0.

A czego się spodziewałeś SelLength ustawia długość tekstu to pomyśl co spowoduje ustawienie tego na 0 (oczywiście wyczyszczenie)
Ech przeczytałem SETLength... SelLength na 0 oczywiście odznaczy zaznaczony tekst
SetText z kolei zmienia cały tekst na podany jako parametr.

Rabbit2 napisał(a):

Czy to ma zwracać pozycje kursora w memo:?

Kopiuj
tablica1.CaretPosition.pos,
tablica1.CaretPosition.Line

Tak

Aby wstawić tekst na wybraną pozycję można (a właściwie powinno się zamiast kombinować na piechotę) użyć metody InsertAfter:

Kopiuj
Memo1.InsertAfter(TCaretPosition.Create(linia, pozycja), 'Test do wstawienia', [TInsertOption.MoveCaret, TInsertOption.CanUndo]);

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 4x, ostatnio: kAzek
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Gut . działa. Teraz kolejne :) . Potrzebuje zrobić coś w stylu Showmeesage ale z wyborem tak/nie w VCL było to możliwe w jednej linijce ale tu nie wiem jak . Znalazłem zwykłe okienko info ale tylko z buttonem OK , a ja chce mieć wybór tak/nie . Kolejna rzecz to jest taka opcja w androidzie jak działanie jak w win32 coś w stylu plików .INI , czyli zapisywanie jakiś wartości zmiennych żeby później je odczytać itp, nie sprawdzałem czy pójdzie to tak samo jak w win32 . Następne .. to jak zrobić kontrole błędów tzn , jak coś jest nie tak np chce odczytać plik którego nie ma to aplikacja na telefonie się wyłącza . A jak zrobić żeby pojawiła się informacja o tym ze nie ma pliku tak żeby nie wyrzucało mnie z aplikacji , Sorry za lawinę pytań ale jeśli masz temat opanowany to myślę ze to nie jest jakiś większy problem dla ciebie . Pozdrawiam

edytowany 1x, ostatnio: Rabbit2
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Zależy jakiego konkretnie dialogu potrzebujesz taki zwykły to chyba najbardziej przypomina zachowaniem:
FMX.DialogService.TDialogService.MessageDialog

Kopiuj
    TDialogService.MessageDialog('To jest test', TMsgDlgType.mtConfirmation,
        [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo, 0,

        procedure(const AResult: TModalResult)
        begin
          case AResult of
          mrYes:
            begin
              //kod po tak
            end;
          mrNo:
            begin
              //kod po nie
            end;
          end;
        end

        );

Plik konfiguracyjne... jakiego formatu użyjesz taki będziesz miał ważne aby podawać właściwą ścieżkę do zapisu/odczytu (o tym już była mowa w temacie). Mogą być to nawet pliki INI pod Windows a Androidem w innym formacie ale obsługa pozostaje zbliżona do standardowych TIniFile niestety wbudowany w Delphi moduł ich obsługi (IniFiles) nie zadziała ze względu na użyte tam funkcje WinApi ale ktoś już napisał moduły do ich obsługi FMX.IniFile dla aplikacji mobilnych. Wprawdzie nie testowałem tego rozwiązania ale wygląda, że robi się jak pod Windows.

W Androidzie działa przechwytywanie wyjątków w bloku try except tak samo jak pod Windows (w nowych wersjach Delphi, bo starsze wersje mają z tym problemy pod nowszymi wersjami Androida).


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Witam .

... ktoś już napisał moduły do ich obsługi FMX.IniFile

ok . Ale jak dodać taki moduł do programu . Rozumiem że do uses dodaje FMX.IniFile , ale chyba trzeba go najpierw dodać do jakiejś biblioteki w delphi ? Jeśli tak to gdzie i co ? Mam pobrać FMX.IniFile.Android.pas , czy FMX.IniFile.pas , czy oba z linka który podałeś i gdzieś go wstawić. ?

edytowany 2x, ostatnio: Rabbit2
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Nigdy nie korzystałeś z modułów zewnętrznych?
Wszystkie pobierasz albo do folderu z innymi unitami programu albo gdziekolwiek i albo w ustawieniach projektu podajesz ścieżkę w Project -> Options -> Delphi Compiler -> Search path (dla wszystkich konfiguracji) albo w ogóle dla całego środowiska Delphi czyli Tools -> Options -> -Delphi Compiler -> Library -> Library path (też trzeba dodać dla wszystkich).


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Nigdy nie korzystałeś z modułów zewnętrznych?>

Nie ;) .
Działam amatorsko i na razie wystarcza mi to co jest w standardzie . Zawsze pisałem w VCL , i przypadkiem się wychyliłem że można napisać mała aplikacje na tel która trochę ułatwi życie u mnie w pracy i teraz muszę siedzieć nad tym bo pomysł się spodobał :) Będzie to banalna apka , składająca się z jednego memo , kilku buttonów , zegarka ,zapisu .ini, wysyłki .txt na FTP . Najgorsze jest to że to inaczej wygląda jak uruchomię na win32 a inaczej się zachowuje w niektórych przypadkach na Androidzie. Ale dzięki twoim podpowiedzią pomału czołgam się ku zakończeniu .
Tradycyjnie na koniec małe pytanie: czy jest jakiś prosty sposób na wysłanie np jakiejś ikony na pasek powiadomień w telefonie , kiedy aplikacja będzie zminimalizowana /działa w tle /? .\

I drugie: czy to:

Kopiuj
WindowState := TWindowState.wsMinimized;

minimalizuje aplikacje .

..wiem że żaden problem żebym to sobie sprawdzić samemu ale będę mógł to zrobić dopiero wieczorem więc jest szansa że wcześniej dowiem się tego od ciebie .
Dzięki pozdrawiam .

0

Problem w tym, że na Androidzie "pod spodem" wszystko działa diametralnie inaczej niż na desktopie. Inny cykl życia aplikacji, okien itd. Tego nie da się przenieść 1:1, więc tak dobrze nie będzie, że ten sam kod, te same funkcje wywołane tak samo będa działać na Androidzie.

R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

..dlatego co chwile sypią się pytania z mojej strony :) mam ich jeszce kilka ale spróbuje sam rozkminić . Jak mi się nie uda to zapytam tutaj .

R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Tools -> Options -> -Delphi Compiler -> Library -> Library path (też trzeba dodać dla wszystkich)>

Nie działa .Pobrałem te cztery pliki i wstawiłem do foldera na pulpicie .Później zrobiłem tak jak napisałeś za każdym razem zmieniając na inna platforme.

screenshot-20171115214001.png

Dodałem do uses
screenshot-20171115214042.png

run i efekt taki .
screenshot-20171115214109.png
co robię nie tak ?

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Masz jakieś śmieci w FMX.IniFile.pas (i pewnie w innych też) przeglądałeś ten plik? Być może pobrało Ci HTML a nie plik pas.. W załączniku masz poprawne pliki (nawet uaktualniona jedna przestarzała metoda).


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Rzeczywiście,. Choć pliki miały rozszerzenie.pas to jak otwarłem to w notatniku , pojawił się html. Dziś sprawdzę czy na twoich plikach pójdzie. . Możesz mi jeszcze podpowiedzieć jak zrobić żeby sprawdzić czy plik.txt w podanej lokalizacji istnieje . ? Na wypadek gdyby jednak opcja z .ini mi nie działała, to zrobię to po swojemu na .txt. Dziękuję.

FileExists? Pójdzie w fmx.?

edytowany 1x, ostatnio: Rabbit2
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

System.SysUtils.FileExists chyba działa choć pokroić się za to nie dam ale System.IoUtils.TFile.Exists działa na 100%.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Witam

System.IoUtils.TFile.Exists działa na 100%.>

zgadza się działa .:)

.INI też działa ale tylko pod win32 , próbuje uruchomić pod Androidem i error taki jak na zdjeciach .

screenshot-20171117063825.png

screenshot-20171117063845.png

screenshot-20171117063901.png

screenshot-20171117064044.png

Nie wiem co jest . Czy do uses wystarczy tylko dodać fmx.inifile czy FMX.IniFile.Android czy i jedno i drugie , czy coś jeszcze .

Kopiuj
uses
  FMX.IniFile;

var
  IniFile: TXplatIniFile;
begin
  IniFile := CreateIniFile('tutaj wstawiłem samą nazwę pliku .ini bez folderów , z folderami wieszało aplikacje przy próbie pod win32'); 
 
  IniFile.ReadString('xx', 'yy', 'default');
end;

Pod win32 działa jak należy .

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
1

Co do INI i błędu z TAndroidHelper to tam wyżej masz w komentarzu wersję pod starsze Delphi (myślałem że masz jakaś nową wersję a w nowych uznaje tamtą metodę za przestarzałą dlatego zmieniłem na nową) a daj w komentarz na nową.

Do uses tylko FMX.TIniFile

A najlepiej zrób tak

Kopiuj
procedure TIniFileAndroid.Init;
begin
  if (FPrefs = nil) then
  {$IFDEF CompilerVersion >= 25}
    FPrefs :=
      TAndroidHelper.Context.getSharedPreferences(
        StringToJString(GetAppName),
        TJContext.JavaClass.MODE_PRIVATE
      );
  {$ELSE}
     FPrefs :=
      SharedActivityContext.getSharedPreferences(
        StringToJString(GetAppName),
        TJContext.JavaClass.MODE_PRIVATE
      );
  {$ENDIF}
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 2x, ostatnio: kAzek
R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Mam XE8 . Rozumiem , popołudniu sprawdzę jak będę w domu .Dziękuje .

R2
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Będzin
  • Postów:45
0

Witam .INI działa ok , dziękuje . Teraz kolejne chyba już ostatnie ja pobrać z internetu plik .txt . Robię tak

Kopiuj
 UrlMon.UrlDownloadToFile(nil, 'http://xxxxx.prv.pl/demo/tablica.txt','C:\xrapis\demo\tablicamobilna.txt',0,nil);

.i pobiera się , ale jak plik na serwerze zaktualizuje to w taki sposób pobiera mi stary plik .txt a nie nowy z serwera .

Dzięki .

edytowany 3x, ostatnio: Rabbit2
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Gorlice
0

Widocznie jest w pamięci podręcznej nie wiem jak pod Androidem bo pod Windows DeleteUrlCacheEntry myślę że może Indy konkretniej IdHTTP do ściągania by się lepiej sprawdziło.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)