Delphi i C++ dobre combo?

Delphi i C++ dobre combo?
0

Cześć,

Sorrki jeśli zły dział - whałem się między Newbie vs obecny, ale do rzeczy.
Co ogólnie sądzicie o pisaniu aplikacji używając dwóch języków,
np Delphi do GUI, oraz pomocniczych funkcji np w C++ jako dll'e.

Dlaczego tak?
Nic nie zastąpi VCL'a do szybkiej budowy nawet skomplikowanych interfejsów, tanie komponenty wizualne i inne.
C++, np jakiś darmowy kompilator który wykonuje funkcje bardziej zasobochłonne gdzie np trzeba zrobić coś dużo szybciej na większej ilości danych.

Takie połączenie sprawia, że program może działać niemal tak samo jak pisany w całości w C++ i samego Visual Studio, ale mamy nieporównywalnie większą produktywność i efektywność, chyba że ktoś mi jest w stanie wskazać lepszą alternatywę na łatwiejsze tworzenie funkcjonalnych GUI do programów.

Emrarcadero C++ w RAD studio odpada, gdzieś czytałem kiedyś (nie mogę znaleźć teraz) że kod jest wyraźnie wolniejszy w C++ innych kompilatorów np. Visual C++ od MS.

To jest w zasadzie moje drugie pytanie tego tematu, ma ktoś porównanie jakieś benchmark działań matematycznych operacji na bazach danych, sortowania itp pierdoły jak wypada C++ od Embarcadero na tle DevC++ czy VS szczególnie najnowsze wersje XE4, XE5, XE6

Pozdr

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
1

szybkość C++ vs Delphi to w obecnej chwili mit. Jeśli już coś jest kluczowe i ma działać szybko to pisze się to jako wstawkę asemblerową. Jednak trzeba mieć świadomość, że źle napisana wstawka może działać wolniej niż napisanie tego samego w języku wysokiego poziomu i pozwolenie zoptymalizowania kompilatorowi


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około godziny
4

Upierdliwość takiego rozwiązania przeważa nad wszelkimi ewentualnymi zyskami.

hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 23 godziny
  • Postów:620
0

Wiesz, takie rozwiązanie miało by sens kiedy byś miał zespół który pracuje na Delphi a jedna osoba klepie w C++ za grosze ew na odwrót. Teraz wystarczy dobrze rozplanować typy zmiennych i algorytm.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
0

Pierwszy raz widzę takie kombinacje; Jaki niby jest z tego zysk? Tworzenie zewnętrznych bibliotek nie ma najmniejszego sensu w tym przypadku, bo nawet jeśli zyskasz nieco na czasie, to będzie trzeba ciągle linkować biblioteki żeby czegoś użyć; Więcej się umordujesz, niż zyskasz;

Biblioteki mogły by się przydać, gdyby funkcje i inne jej zasoby miały być uniwersalne - jedna biblioteka możliwa do wykorzystania w wielu projektach, uniezależniona od języka, w którym dana aplikacja powstaje; Osobiście nie widzę sensu w tworzeniu programu w ten sposób.


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

do zwyklego projektu nie ma sensu.

A jakie sa te niezwykle? A no np. SKYPE, GUI w Delphi, a warstwa komunikacyjna w C++, wtedy mozna sie zastanawiac nad takim czyms.

EM
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:271
0

Do C++ też masz biblioteki w których można budować GUI - Qt, Gtkmm, WxWidgets, Ultimate więc nie widzę sensu aby łączyć go z Delphi.

0

@furious programming nie zgodzę się, co to za wysiłek? Satyczne ładowanie i wywoływanie.
Niestety wydajność Delphi w niektórych operacjach może być przeszkodą, typowe matematyczne operacje działają 30-200% szybciej w C++ niż w Delphi, ja uważam że to całkiem sensowne rozwiązanie.
Poza tym nie chodzi o sam interfejs, przecież można pisać wiele funkcji znacznie prościej za pomocą Delphi a zewnętrzenie korzystać tylko z tych, gdzie wydajność ma znaczenie i robi różnicę. Wciąż jest produktywność wyższa niż zabawa z tworzeniem wszystkiego w VS, poza tym jest jeszcze jedna zaleta, program działa śmiało bez żadnych .netów itp, jeden exe ew jedna dwie biblioteki zew ładnie czysto i praktycznie tak samo szybko jak w przypadku samego VS przy czym w przypadku większego programu można znacznie skrócić czas developmentu i tym samym koszt.

@emacs nie ma co porównywać nawet, proste operacje i budowa GUI jest wciąż 5x szybsza i wygodniejsza w Delphi.

Combo wg mnie ma jak najbardziej sens.

Co do C++ od Embarcadero kiedyś to porównywałem chyba kiepski jest wolniejszy od Visual C++ ich kompilator a wydajność na poziomie Delphi albo niewiele wyższa....

EM
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:271
0

@up najszybciej rozwiążesz dany problem w technologi która lubisz i którą znasz najlepiej.

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około godziny
1

Kod pisany przez nas powinien być w całości napisany w jednym języku.
Biblioteki, których używamy, niech sobie będą pisane w czymkolwiek - nie mamy na to wielkiego wpływu.

Przypadkiem pośrednim może być, gdy napisaliśmy już bibliotekę (np. w C++) wszystko działa, jest gotowe, ale zachciało nam się dorobić GUI - no to ewentualnie można zrobić to w Delphi. Ale to gdy już mamy sporo kodu, którego nie będziemy przepisywać od nowa.
W dopiero zaczynanym projekcie mieszanie języków to głupi pomysł.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
0

W pełni zgadzam się z poprzednikiem - jeden program, pisany w całości przez nas, powinien być w jednym języku;

gronkowietz napisał(a)

nie zgodzę się, co to za wysiłek? Satyczne ładowanie i wywoływanie.

Podałeś pierwszą nadmiarowość - linkowanie bibliotek; Na dodatek jeszcze statyczne, które sensu nie ma, bo to samo możesz mieć od razu w jednym programie, bez martwienia się choćby o istnienie biblioteki na dysku (to osobny plik);

gronkowietz napisał(a)

Niestety wydajność Delphi w niektórych operacjach może być przeszkodą, typowe matematyczne operacje działają 30-200% szybciej w C++ niż w Delphi, ja uważam że to całkiem sensowne rozwiązanie.

Jeżeli algorytmy obliczeniowe działają aż o 200% wolniej, to znaczy że trzeba je zoptymalizować, bo są słabo napisane;

Jeżeli chcesz się dowiedzieć czy to ma sens, to po prostu upewnij się, że pomimo wszelkich optymalizacyjnych zabiegów, kod napisany np. w C++ będzie o wiele szybszy, co przełoży się na większe zyski czasowe, niż 5 sekund; Przetestuj różne rozwiązania, a będzie wiadomo co lepiej będzie wykorzystać; Sam oceń, czy taki rozkład będzie się opłacał, czy nie, a jeśli będzie się opłacał (bo mocno przyspieszy działanie obliczeń/programu), to czy nie zwiększy znacznie nakładu pracy;

Możesz kombinować, nikt Ci przecież nie zabroni - to po prostu inne podejście do projektowania aplikacji; Ja tam nie jestem przekonany do takiego podejścia; Jednak opłacać się to będzie jedynie w przypadku, gdy czas wykonania algorytmów ma kluczowe znaczenie, a zysk będzie znaczący, nie wpływając znacznie na nakład pracy.


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
0

WinHex słynny jest tak mniej więcej napisany :)

0
jakiśtamnick napisał(a):

WinHex słynny jest tak mniej więcej napisany :)

Chociaż nie pomyłka tam większość w c plus borlanda starym i tylko pomocnicze w dev c++ lib, ale gdzieś kiedyś widziałem takie rozwiązanie w całkiem znanym programie...

0

Cóż ta za pomysły... Builder C++ ma przecież VCL, no i C++ chyba też. :)

0
fur napisał(a):

Cóż ta za pomysły... Builder C++ ma przecież VCL, no i C++ chyba też. :)

Kompilator Builder c++ jest wyraźnie wolniejszy od innych, stąd ten pomysł. Druga sprawa to Delphi nadal jest prostrzy o wiele to mniej skomplikowanych funkcji w których szybkość działania nie ma żadnego znaczenia.

0
jakiśtamnick napisał(a):

Kompilator Builder c++ jest wyraźnie wolniejszy od innych, stąd ten pomysł. Druga sprawa to Delphi nadal jest prostrzy o wiele to mniej skomplikowanych funkcji w których szybkość działania nie ma żadnego znaczenia.

Wolniejszy od czego?
VS C++ jest chyba z 10 razy wolniejszy... od krowy.

Natomiast Delphi jest obiektowo kompletnie do d**y;
przecież tam nie ma nawet automatycznych destruktorów, tz. gdy tworzysz np. TFile, wówczas sam musisz to jawnie czyścić, poprzez jakieś afile.done, co w c++ samo się robi.

Jedyna przewaga Delphi nad C++ to ta instrukcja with, która pozwala unikać ciągłego pisania pełnych nazw obiektów... C# to chyba dodano, no ale to skrypciarski język, jak ta Java, czy nawet javascript w html, i inne takie zabawki.

hzmzp
idź k***a klepać w asemblerze...
olesio
Nie potrafisz pomóc, tylko musisz tutaj "hejcic"? Tak samo było pamiętam, kiedy pytalem o TSR kiedyś. Powstrzymał byś się najlepiej.
flowCRANE
Panie @hzmzp - jeśli jeszcze raz zobaczę w Twojej wypowiedzi jakiekolwiek obraźliwe słowo, jakikolwiek wylgaryzm, choćby zagwiazdkowany, Twoje konto zostanie zbanowane na bardzo, bardzo długo; Więcej nikt nie będzie Tobie tłumaczył, że kulturę także należy zachować w relacjach z innymi ludźmi w Internecie; Moderacja ostrzega po raz ostatni, a ja z kolei będę Cię miał na oku;
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
2
fur napisał(a)

Natomiast Delphi jest obiektowo kompletnie do d**y;
przecież tam nie ma nawet automatycznych destruktorów, tz. gdy tworzysz np. TFile, wówczas sam musisz to jawnie czyścić, poprzez jakieś afile.done, co w c++ samo się robi.

Ja jednak polecałbym powstrzymać się od wypowiadania na temat, o którym raczej nie masz bladego pojęcia; Nie stosuje się czegoś takiego jak done - jest Free i Destroy; A w C++ nic "samo się robi" - do tego istnieją skomplikowane mechanizmy;


Delphi (przynajmniej jego starsze wersje, nowych nie znam), podobnie jak najpopularniejsze implementacje czystego Pascala czy Object Pascala, nie wspierają GC (masz tutaj link do opisu - zapoznaj się z tym tematem), więc programista w wielu przypadkach musi sam po sobie sprzątać (ja wiem, w dzisiejszych czasach to takie nienaturalne...);

Naturalną koleją rzeczy jest to, że jeśli się dynamicznie alokuje pamięć - należy ją także zwolnić; Nie dotyczy to oczywiście typów prostych, łańcuchów, rekordów i wielu innych typów danych, a także komponentów, które automatycznie zwalnia klasa formularza w swoim destruktorze; Są jeszcze inne ciekawe przypadki, jednak nie będę ich wszystkich wymieniać, żeby nie odebrać Ci tej przyjemności - sam przeczytaj jakiś sensowny kurs;

Garbage Collection z jednej strony zapobiega tworzeniu dziurawego kodu, powodującego wycieki pamięci, ale z drugiej strony mimowolnie "uczy" niedbałości, która później obiawia się gigantycznymi memleakami, po przeniesieniu na inny język programowania, w którym nie ma "sprzątaczki"; Oczywiście to dotyczy tych programistów, którzy przenoszą swoje nawyki bez zapoznania się dokumentacją, objaśniającą wykorzystywanie zasobów pamięci;

fur napisał(a)

Jedyna przewaga Delphi nad C++ to ta instrukcja with, która pozwala unikać ciągłego pisania pełnych nazw obiektów...

Instrukcja wiążąca With to nie jest lekarstwo na wszystko; Kolejna rzecz, o której wspominasz, jednak bez jakichkolwiek sensownych "za" i "przeciw";

Pewnie jeszcze nie wiesz, że instrukcja wiążąca owszem, służy do zwolnienia programisty z powtarzania tego samego elementu kodu (to raczej nie powinno podlegać pod zasadę DRY), a ponadto może nawet przyczynić się do zoptymalizowania kodu; Zoptymalizowania połowicznego, dlatego że większość takich optymalizacji można ominąć, przez wykorzystanie zmiennej do zapisania referencji np. do jakiegoś obiektu, aby nie pobierać go za każdym razem;

Oczywiście skoro mowa o plusach, także należy wspomnieć o minusach; Nieumiejętne posługiwanie się instrukcją wiążącą doprowadza w dużej ilości przypadków do pogorszenia eketywności kodu, co można zaobserwować podglądając stan stosu; Można sobie stosować tę instrukcję dowolnie, ale trzeba mieć na uwadze, że albo używamy ją dla przyspieszenia pracy kodu (jeśli wiemy jak ją użyć), albo dla skrócenia zapisu instrukcji (co wiązać się może ze spowolnieniem wykonywania danego kodu);

Istnieje wiele technik optymalizacji kodu, z którymi każdy prędzej czy później powinien się zapoznać; Tobie zaś polecam zapoznanie się z tym artykułem, który zawiera kilka cennych wskazówek, które można wykorzystać zarówno w strukturalnym Pascalu, jak i w Delphi czy Object Pascalu;

A jeśli uważasz, że Delphi jest "do d**y" tylko dlatego, że nie posiada mechanizmów sprzątających, to najwidoczniej ani Pascal, ani Delphi, ani Object Pascal nie jest dla Ciebie; Pisz więc kod w takich językach jak np. Java, gdzie "sprzątaczka" istnieje i ma się dobrze.


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 7x, ostatnio: flowCRANE
mychal
Ja tam nie lubię konstrukcji with. Wówczas nie da się podglądać stanu zmiennych poprzez najechanie na nazwę w trakcie debugowania (przynajmniej w XE2).
flowCRANE
Jak też mocno ograniczam się do jej używania; I debugowanie sprawia czasem kłopoty, i niestety takie same nazwy np. metod wiązane przez tę instrukcję zostają przesłonięte, co czasem prowadzi do nieoczekiwanych efektów;
0
furious programming napisał(a):

Ja jednak polecałbym powstrzymać się od wypowiadania na temat, o którym raczej nie masz bladego pojęcia; Nie stosuje się czegoś takiego jak done - jest Free i Destroy; A w C++ nic "samo się robi" - do tego istnieją skomplikowane mechanizmy;

Free jest zamiennikiem delete z C++, który ma zwalniać dodatkowo te dynamicznie alokowane po... zniszczeniu.

I nie ma nic skomplikowanego w C++ w tej sprawie - destruktory same się wywołują dla obiektów stawianych w kodzie i byle gdzie: w if-ach, forach, w dowolnym bloku, czyli np.:

Kopiuj
for(i = 1; i < 20; i++)
{ 
  TFile f(prefix + i, mode); // otwiera/tworzy plik

  // czytamy, zapisujemy...

}

i to już się samo pozamyka, wyczyści, zwolni, itd.

no, gdzie popadnie, w przeciwieństwie do delphi/pasa, w których musisz deklarować to wszystko w var przed begin... chyba tylko w fortranie gorzej jest z tym. :)

furious programming napisał(a):

Delphi (przynajmniej jego starsze wersje, nowych nie znam), podobnie jak najpopularniejsze implementacje czystego Pascala czy Object Pascala, nie wspierają GC (masz tutaj link do opisu - zapoznaj się z tym tematem), więc programista w wielu przypadkach musi sam po sobie sprzątać (ja wiem, w dzisiejszych czasach to takie nienaturalne...);

Nie, w C++ nie ma tego - to jest w tych nowomodnych skrypciarskich 'językach': C#, java, .net, i inne takie myszki-robaczki...

furious programming napisał(a):

Naturalną koleją rzeczy jest to, że jeśli się dynamicznie alokuje pamięć - należy ją także zwolnić; Nie dotyczy to oczywiście typów prostych, łańcuchów, rekordów i wielu innych typów danych, a także komponentów, które automatycznie zwalnia klasa formularza w swoim destruktorze; Są jeszcze inne ciekawe przypadki, jednak nie będę ich wszystkich wymieniać, żeby nie odebrać Ci tej przyjemności - sam przeczytaj jakiś sensowny kurs;

coś chyba cienko znasz c++;
robisz swój class, albo bierzesz gotowy TPinter i on sam się wyczyści... opłucze i wysuszy. :)

furious programming napisał(a):

Instrukcja wiążąca With to nie jest lekarstwo na wszystko; Kolejna rzecz, o której wspominasz, jednak bez jakichkolwiek sensownych "za" i "przeciw";

Pewnie jeszcze nie wiesz, że instrukcja wiążąca owszem, służy do zwolnienia programisty z powtarzania tego samego elementu kodu (to raczej nie powinno podlegać pod zasadę DRY), a ponadto może nawet przyczynić się do zoptymalizowania kodu; Zoptymalizowania połowicznego, dlatego że większość takich optymalizacji można ominąć, przez wykorzystanie zmiennej do zapisania referencji np. do jakiegoś obiektu, aby nie pobierać go za każdym razem;

Oczywiście skoro mowa o plusach, także należy wspomnieć o minusach; Nieumiejętne posługiwanie się instrukcją wiążącą doprowadza w dużej ilości przypadków do pogorszenia eketywności kodu, co można zaobserwować podglądając stan stosu; Można sobie stosować tę instrukcję dowolnie, ale trzeba mieć na uwadze, że albo używamy ją dla przyspieszenia pracy kodu (jeśli wiemy jak ją użyć), albo dla skrócenia zapisu instrukcji (co wiązać się może ze spowolnieniem wykonywania danego kodu);

Istnieje wiele technik optymalizacji kodu, z którymi każdy prędzej czy później powinien się zapoznać; Tobie zaś polecam zapoznanie się z tym artykułem, który zawiera kilka cennych wskazówek, które można wykorzystać zarówno w strukturalnym Pascalu, jak i w Delphi czy Object Pascalu;

A jeśli uważasz, że Delphi jest "do d**y" tylko dlatego, że nie posiada mechanizmów sprzątających, to najwidoczniej ani Pascal, ani Delphi, ani Object Pascal nie jest dla Ciebie; Pisz więc kod w takich językach jak np. Java, gdzie "sprzątaczka" istnieje i ma się dobrze.

Oczywiście, że optymalizuje - przyspiesza. Zwłaszcza w 16 bitowym paskalu bez with te same wskaźniki są ładowane z 50 razy zamiast raz... no ale jest tylko ta jedyna przewaga delphi nad c++.

dodanie znacznika <code class="cpp"> - furious programming

edytowany 1x, ostatnio: flowCRANE
n0name_l
.NET to nie jezyk.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około godziny
1
fur napisał(a)

to jest w tych nowomodnych skrypciarskich 'językach': C#, java, .net, i inne takie myszki-robaczki

Przestań hejcić, bo czytanie ciebie jest nieprzyjemne.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
0
fur napisał(a)

Nie, w C++ nie ma tego - to jest w tych nowomodnych skrypciarskich 'językach': C#, java, .net, i inne takie myszki-robaczki...

To teraz wskaż miejsce w moim poprzednim poście, w kórym napisałem, że C++ ma Garbage Collection; Napisałem za to o Javie:

furious programming napisał(a)

Pisz więc kod w takich językach jak np. Java, gdzie "sprzątaczka" istnieje i ma się dobrze.

Jeśli więc nic na temat C++ nie napisałem, to po pierwsze nie cytuj i nie komentuj moich słów, bo Twoje odpowiadzie ich nie dotyczą; Po drugie nie wmawiaj mi że coś twierdzę, skoro sam najlepiej wiem co twierdzę;

Poza tym .NET to nie jest język programowania, a platforma programistyczna; Znów podam Ci link do odpowiedniego artykułu, żebyś się o tym mógł przekonać;

fur napisał(a)

coś chyba cienko znasz c++;
robisz swój class, albo bierzesz gotowy TPinter i on sam się wyczyści... opłucze i wysuszy.

To teraz znajdź miejsce w moim poprzednim poście, w którym napisałem po pierwsze - cokolwiek o C++, po drugie - że znam C++; Jeśli więc żadne moje słowa z poprzedniego posta o tym nie świadczą, to bądź łaskaw ich nie komentować, bo Twoje odpowiedzi ich nie dotyczą; Po drugie to sam najlepiej wiem czy znam C++, czy go nie znam;

fur napisał(a)

Oczywiście, że optymalizuje - przyspiesza.

W takim razie zaglądnij jednak do artykułu, do którego link podałem w poprzednim poście, bo jak widać nie zapoznałeś się z ułomnością instrukcji With; Albo kliknij w ten link - prowadzi on bezpośrednio do opisu instrukcji wiążącej; Optymalizacja kodu przez wiązanie wcale nie jest taka klarowna;


Podsumowując - Twoje posty praktycznie nie dotyczą opinii na temat stworzenia aplikacji-hybrydy, napisanej po części w C++, a po części w Delphi; Hejtujesz Delphi tylko dlatego, że jest to język (lub kompilator), który nie ma zamiaru po Tobie sprzątać, a tłumaczenie Ci, że sprzątanie po sobie to dobry nawyk, traktujesz jak obrazę Twojej osoby w najgorszy sposób;

Hejterzy najczęściej umniejszają wartość danej technologii tylko dlatego, że jej nie znają, nie lubią jej lub praca z nią ich przerasta; Mnie w Delphi/Object Pascalu także trochę rzeczy przeszkadza, jednak nic nie stoi na przeszkodzie, aby się do nich po prostu przyzwyczaić i nie żalić się po forach;

W takim razie Panie @fur - jeśli masz coś do powiedzenia w temacie dotyczącym tworzenia aplikacji w dwóch językach - postuj śmiało; Jeżeli natomiast zamierzasz hejtować Delphi, bo zmusza do ręcznego zwalniania dynamicznie zaalokowanej pamięci, to lepiej skończ się wypowiadać; Naprawdę nie do tego celu został ten wątek założony.


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 6x, ostatnio: flowCRANE
babubabu
No i mamy gównoburzę :) wcale się nie zdziwię jak wątek zmieni tytuł i wyląduje we flame ;]
n0name_l
Z tego co sie orientuje to wiekszosc tematow z udzialem @fur tak wlasnie sie konczy, niestety.
flowCRANE
@babubabu - już wcześniej brałem to pod uwagę, ale z przeniesienia wątku do Flame nie będzie żadnych korzyści; @n0name_l - jeśli tak dalej pójdzie, to po prostu posty będą kasowane; A jak to nie pomoże, to i bany polecą (na anonimów też jest sposób);
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)