Porównanie wartości editów i szukanie duplikatów

Porównanie wartości editów i szukanie duplikatów
0

Chciałbym porównać 10 pól edycyjnych i jeżeli liczba powtórzy się w którymś z nich to wyskakuje wiadomość.
Sam napisałem coś takiego kompiluje się wszystko lecz nie działa

Kopiuj

if strtoint(edit1.text)=strtoint(edit2.text) or strtoint(edit3.Text) or strtoint(edit4.text) or  strtoint(edit5.text)  or strtoint(edit6.text) or strtoint(edit7.text) or strtoint(edit8.text) or strtoint(edit9.text) or strtoint(edit10.text)
then
showmessage('Wpisales dwa razy lub wiecej ta sama liczbe!')

Proszę o pomoc!

MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 dni
  • Postów:1082
1

Jeśli miałbyś 100 editów (w sumie dziwny pomysł, ale co tam) to też byś napisał takiego if'a? Zapisz te liczby z editów do tablicy 10 elementowej (możesz to zrobić za pomocą pętli + http://docwiki.embarcadero.com/CodeExamples/Seattle/en/FindComponent_%28Delphi%29 ), posortuj a następnie sprawdź (w pętli) czy dwa sąsiadujące ze sobą elementy nie są takie same.

0

Ale mi pomogłeś,może poczekam na odpowiedź kogoś bardziej ogarniętego.
wolfik ..

Po co mi robić tablicę dla 10 elementów i bawić się w tablice...

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
2

@Mr.YaHooo dobrze podpowiedział - żeby kod wyglądał i działał sensownie, użyj np. tablicy, wpakuj tam wyniki konwersji treści pól edycyjnych i wtedy na spokojnie szukaj powtórek; Możesz się obejść bez konwersji i po prostu porównywać tekst, jednak to zależy od Twoich oczekiwań;

Wracając do problemu - kod nie działa właściwie, bo tak go zapisałeś; Pierwszy argument warunku to porównanie, reszta to wykonywanie alternatywy na zwróconym wyniku z porównania; I niby jak to ma szukać powtórzeń?

Po co mi robić tablicę dla 10 elementów i bawić się w tablice...

Skoro jesteś mądrzejszy i wiesz lepiej, to dlaczego założyłeś wątek i prosisz o pomoc?


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 dni
  • Postów:1082
1

Po co mi robić tablicę dla 10 elementów i bawić się w tablice...
Dokładnie jak @furious programming wspomniał. Po to aby kod wyglądał sensownie. Jeśli byś chciał to załatwić porównaniami musiałbyś porównać te elementy ze sobą:
1z2
1z3
1z4
1z5
1z6
1z6
1z7
1z8
1z9
1z10

2z3
2z4
2z5
2z6
2z7
2z8
2z9
2z10

3z4
3z5
3z6
3z7
3z8
3z9
3z10

4z5
4z6
4z7
4z8
4z9
4z10

5z6
5z7
5z8
5z9
5z10

6z7
6z8
6z9
6z10

7z8
7z9
7z10

8z9
8z10

9z10

Chyba nie chcesz mieć takiej ilości ifów??

Oczywiście można to zrobić za pomocą 2 pętli jedna w drugiej + FindComponent, ale to jest bez sensu.

0

Chodzi mi o poprawiony mój kod,chciałbym uniknąć tablicy.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
0

Twojego kodu nie da się poprawić inaczej niż wyrzucając go i pisząc od nowa, tym razem z użyciem bufora pomocniczego; Przy czym FindComponent przyda się do uzupełnienia macierzy;

Ja bym proponował, aby referencje do wszystkich editów wrzucić do jednej tablicy, następnie wyniki konwersji wrzucić do drugiej tablicy; Na koniec poszukać duplikatów w tej drugiej.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 dni
  • Postów:1082
0

Ale popatrz ile wtedy musisz mieć porównań. Dlatego napisałem czy byś tak samo robił jakbyś tych editów miał 100.

0

Czyli zrobić to w tablicy,posortować i później porónywać np.

Kopiuj
if t[1]=t[2] then ...
edytowany 1x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
0

Nie, używając pętli i algorytmu podobnego do sortowania bąbelkowego.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
0

Nie rozumiem.

Co mam umieścić w tej pętli?

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
3

Masz przykładowy kod - celowo wykorzystałem gołe cyferki, abyś widział o co w tych pętlach chodzi:

Kopiuj
type
  TNumbersArr = array [0 .. 9] of Integer;
const
  NUMBERS: TNumbersArr = (0, 1, 2, 3, 4, 1, 6, 7, 1, 9);
var
  intA, intB: Integer;
begin
  for intA := 0 to 8 do
    for intB := intA + 1 to 9 do
      if NUMBERS[intA] = NUMBERS[intB] then
        WriteLn('Dupliacate - ', intA, ' and ', intB);

  Write('done...');
  ReadLn();
end.

Wyjście:

Kopiuj
Dupliacate - 1 and 5
Dupliacate - 1 and 8
Dupliacate - 5 and 8
done...

I teraz w zależności od potrzeb przerób powyższy kod.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
0

Co oznacza ta linika ?

Kopiuj
NUMBERS: TNumbersArr = (0, 1, 2, 3, 4, 1, 6, 7, 1, 9);
edytowany 1x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
0

Deklaracja tablicy NUMBERS jako stałej; Służy jedynie dla przykładu, Ty w swoim kodzie użyj tablicy jako zmiennej i wypełnij ją liczbami, które pozyskasz podczas konwersji tekstu z komponentów.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 2 godziny
  • Postów:1595
0
Pogromca123 napisał(a):

Ale mi pomogłeś,może poczekam na odpowiedź kogoś bardziej ogarniętego.
wolfik ..

Mniemam, że o mnie chodzi :) więc spróbuję wyjść na ogarniętego i wpierw dopytam o rzeczy, których nie rozumiem.
Czy zależy Ci na porównywaniu tyko edit1 z edit2 potem edit3 z edit4 czy edit1 z edit2,3...n i tak dla wszystkich editów?
Drugie pytanie jaka wersja delphi bo jak masz delphi nowsze niż 2009 to możnaby pomyśleć o czymś "wykwintniejszym" jak np TDictionary :) Daj znać a spróbujemy coś pomóc choć wydaje mi się, że przykład od @furious programming powinien wystarczyc.

0

Ehh,nadal nie rozumiem jak to ma działać.Wersja Delphi 2007 ( nie mogę innej,projekt szkolny).

Kopiuj

procedure TForm1.Button1Click(Sender: TObject);
begin
begin
memo1.clear;
end;
  For i:=1 to 22 do
    begin
      Pom[i]:=0 ;
    end;
  Randomize;
   For i:=1 to 6 do
    begin
      Repeat Buff:=Random(49); until (pom[Buff]=0) ;
      Tab[i]:=Buff;          
      pom[buff]:=1 ;
    end;
    begin
    for i:=1 to 6 do
     Memo1.Lines.Add(inttostr(tab[i] ));
     end;
end;

0

To jest już jedno porównanie do innej tablicy.

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 2 godziny
  • Postów:1595
0

Ok odopowiedz jeszcze na moje drugie pytanie (a dokładnie pierwsze)

0

Chodzi mi tylko o porównanie kolejnych ntych editów do siebie i jeżeli któreś z nich są równe wyskakuje showmessage.

Czyli np.

Kopiuj
if strtoint(edit1.text)=strtoint(edit2.text) then
showmessage('Te same liczby!')
else if strtoint(edit1.text)=strtoint(edit3.text) then..

Tylko bym musiał napisać tego kilkadziesiąt linijek i nie wiem po prostu jak to rozwiązać inaczej bo robienie tego dla 10 editów to będzie mnóstwo kodu...

T9
Napisz sobie generator takiego kodu i wklej wyniki :D
szopenfx
  • Rejestracja:prawie 21 lat
  • Ostatnio:4 miesiące
0

Przypuszczam, że treścią zadania jest wylosowanie 6 liczb z 49 bez powtórzeń tak jak jest to w pewnej popularnej grze liczbowej.
Pom to prawdopodobnie u ciebie tablica 49 liczb z zerami jeśli wylosujesz jakąś to "skreślasz ją" oznaczając jedynką przy losowaniu wybierasz indeks danej liczby i sprawdzasz czy już została wylosowana. No może nie jest to najlepszy sposób na losowanie tych liczb, ale zawsze coś.
Pytania pomocnicze:
Dlaczego pierwsza pętla wypełnia tą tablicę pom tylko od 1 do 22 skoro liczb jest 49?
Random(49); losuje liczby z zakresu 0..48 pamiętaj o tym
Kryształowa kula podpowiada mi też, że te editki mają służyć do wprowadzenia przez użytkownika swoich typów - jeśli tak to dlaczego po prostu nie "skreślisz" tych liczb z tej tablicy pom, zliczysz ich ilość i jeśli nie będzie 6 skreślonych to albo się powtarzają albo nie wszystkie zostały wybrane.

KA
Do losowania bez powtórzeń wcześniej liczby w editach? Nie wiem co on kombinuje ale chyba nie...
flowCRANE
Raczej nie, bo potrzebuje dziesięciu, a nie sześciu;
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 17 godzin
  • Lokalizacja:Gorlice
2

To przecież @furious programming zapodał prawie gotowca tyle że zamiast stałej tablicy zrób dynamiczną lub listę np.:\

Kopiuj
var
  EditList: TStringList;
  i, j: Integer;
begin
  Memo1.Clear;
  EditList:= TStringList.Create;
  try
    for i:=0 to Panel1.ControlCount -1 do //tylko edity ktore maja byc porownywane na panelu
      if Panel1.Controls[i] is TEdit then
        EditList.AddObject(Panel1.Controls[i].Name, TObject(StrToInt(TEdit(Panel1.Controls[i]).Text)));
    for i:= 0 to EditList.Count - 2 do
      for j:= i + 1 to EditList.Count - 1 do
        if Integer(EditList.Objects[i]) = Integer(EditList.Objects[j]) then
          Memo1.Lines.Add(Format('%0:s = %1:d i %2:s = %3:d', [EditList.Strings[i],
            Integer(EditList.Objects[i]), EditList.Strings[j], Integer(EditList.Objects[j])]));
  finally
    EditList.Free;
  end;
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 1x, ostatnio: kAzek
Zobacz pozostały 1 komentarz
KA
@furious programming dlaczego przecież jest dobrze
flowCRANE
Źle napisałem, w tej pętli: for i:= 0 to EditList.Count - 1 do :)
KA
o w tej tak, dzięki :D
woolfik
@kAzek wykorzystując property Duplicates := dupError i zmieniając Panel1.Controls[i].Name na TEdit(Panel1.Controls[i]).Text w AddObject można by pozbyć się drugiej pętli bo przy zdublowanej wartości żygnęłoby wyjątkiem :)
KA
@woolfik Niby tak ale Duplicates działa tylko na listach sortowanych więc to nie robi żadnej optymalizacji (a wręcz przeciwnie bo sprawdza całą listę przy każdym dodawaniu a nie raz na końcu) tyle że trochę mniej kodu musi naklepać programista.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
1

Zaproponuję może swoje rozwiązanie, które powinno być dla pytacza zrozumiałe;

Kopiuj
const
  INDEX_FIRST = 0;
  INDEX_LAST  = 9;

type
  TEditsArr  = array [INDEX_FIRST .. INDEX_LAST] of TEdit;
  TValuesArr = array [INDEX_FIRST .. INDEX_LAST] of Integer;

Deklaracja stałych i typów; Stałw przechowują indeksy dla macierzy, natomiast typy zawierają deklaracje macierzy do przechowywania editów oraz liczb, pozyskanych po konwersji tekstu z pól edycyjnych;

Kopiuj
var
  eaEdits: TEditsArr;
  vaValues: TValuesArr;

Deklaracja zmiennych - eaEdits zawierać będzie referencje do pól edycyjnych, natomiast vaValues wyniki konwersji;

Kopiuj
var
  intEditIdx: Integer;
begin
  for intEditIdx := INDEX_FIRST to INDEX_LAST do
  begin
    eaEdits[intEditIdx] := FindComponent(Format('Edit%d', [intEditIdx]));

    if not TryStrToInt(eaEdits[intEditIdx].Text, vaValues[intEditIdx]) then
    begin
      ShowMessage(Format('Edit%d nie zawiera liczby.', [intEditIdx]));
      eaEdits[intEditIdx].SetFocus();
      Exit();
    end;
  end;

Uzupełnienie macierzy wskazaniami na komponenty pól edycyjnych; Brak zabezpieczeń, więc komponenty o szukanych nazwach muszą istnieć na formularzu; W tej samej pętli następuje uzupełnienie macierzy vaValues - jeżeli konwersja nie powiedzie się, zostanie wyświetlony komunikat, następnie pole to zostanie aktywowane, a dalsze instrukcje w bloku kodu pominięte;

Kopiuj
var
  intA, intB: Integer;
begin
  for intA := INDEX_FIRST to INDEX_LAST - 1 do
    for intB := intA + 1 to INDEX_LAST do
      if vaValues[intA] = vaValues[intB] then
      begin
        ShowMessage(Format('Edit%d zawiera powtórzoną liczbę.', [intB]));
        eaEdits[intB].SetFocus();
        Exit();
      end;

Wyszukiwanie duplikatów; Po znalezieniu powtórki zostaje wyświetlony komunikat, pole z powtórką aktywowane, a dalsze instrukcje i iteracje pętli pominięte; Kod bardzo prosty, niezbyt nowoczesny, jednak ma być zrozumiały dla początkującego;

PS: Cały kod należy wpakować do jednego bloku kodu, np. zdarzenia OnClick przycisku.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
MY
Jak dla mnie to jest najbardziej elegancki sposób zrobienia tego o co pyta założyciel wątku.
flowCRANE
Można by jeszcze nieco inaczej, jednak liczby musiałyby (albo i nie?) być jednobajtowe; Wtedy zamiast tablicy można wykorzystać zbiór - http://4programmers.net/Pastebin/5535 :)
MY
@furious programming tak. Ewentualnie wykorzystać jakąś listę z tego co udostępnia VCL. Wtedy takiego ograniczenia nie będzie.
stasinek
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 9 lat
  • Postów:17
0

Nie jestem tak biegły z Delphi jak krzykliwyprogramer ale VCL chyba jest podobnie do C++ Buldera? Jeżeli umieścisz komponenty Edit na kontrolce która dziedziczy po TWinControl np. TForm lub TPanel to bez tworzenia tablicy można użyć property Controls[numer] oraz ControlsCount (Child). Po czym prostej petli:

Kopiuj
bool duplikat = false;

for(int i = 0; i < Form1->ControlCount; i++)
    {
    for (int j = 0; j < Form1->ControlCount; j++)
        {
        // wyszły by dwie kontrolki o tych samych indeksach: idz dalej
        if (i==j)
            continue;
        // opcjonalne sprawdzenie czy kontrolka jest Edit'em
        if (dynamic_cast<TWinControl *>(Form1->Controls[i])->Name.Pos("Edit")==0 || dynamic_cast<TWinControl *>(Form1->Controls[j])->Name.Pos("Edit")==0)
            continue;
        // sprawdzenie zawartości
        if (dynamic_cast<TEdit *>(Form1->Controls[i])->Text == dynamic_cast<TEdit *>(Form1->Controls[j])->Text)
            {
            ShowMessage("Dupa jasia, w polach: " + dynamic_cast<TEdit *>(Form1->Controls[i])->Name + " oraz " + dynamic_cast<TEdit *>(Form1->Controls[j])->Name + " masz takie same wartości!");
            duplikat = true; break;
            }
        }
    if (duplikat==true) break;
    }

Podczas testowania użyłem Form1 bo nic na niej nie było poza Button1 i 10xEdit. Cudem Button nie wywołał problemu z rzutowaniem. Ale wypadało by zgrupować pola na Panel bo może być problem z dynamic_cast dla pozostałych komponentów w oknie(Access Violation). Nie da sie rzutować wszystkich na TControl a już tym bardziej po TEdit->Text.
Edity umieszczone samodzielnie na Panelu = zadziała bankowo(sprawdzałem).
Wystarczy to przekuć na pascala ;)

edytowany 5x, ostatnio: stasinek
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
1

@stasinek - po co ten post?

Dwie pełne strony odpowiedzi, o Tobie się zachciało kolejne rozwiązanie i to nie dość że w innym języku, to jeszcze nieprawidłowe; Pytacz wyraźnie zaznaczył w tagu, że wątek dotyczy Delphi, nie C++, po drugie także wyraźnie zaznaczył, że porównywanie ma dotyczyć liczb, a nie tekstu; Twój kod zadziała nieprawidłowo i nie wykryje duplikatu, jeżeli w jedym polu wpiszę 5, a w drugim 05 lub 005 lub +5 (to te same liczby, a teksty różne);

Już nie wspominam o jakichś dziwnych continue zamiast prawidłowego indeksowania pętli, a także o przekazywaniu flagi duplikat z pętli do pętli i cudach z break, zamiast po prostu return false.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 5x, ostatnio: flowCRANE
MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 dni
  • Postów:1082
1

Ja tylko jeszcze dodam do tego co @furious programming napisał, że za dużo rzutowań w tym kodzie ma kolega @stasinek. Ja wiem, że czasem bez tego się nie obejdzie i sam stosuję rzutowania. Jednak takie coś stanowczo pogarsza czytelność kodu i początkujący może mieć z tym problem.

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)