Problem klas delphi na lazarusa

Problem klas delphi na lazarusa
PR
PR
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 4 lata
  • Postów:204
3

Ale co? To potwierdza moje słowa. Można kupić D7 i ściągnąć jak jesteś zarejestrowany jako user j tyle. Nie będę przekonywał do suchych faktów. https://www.embarcadero.com/products/delphi/previous-versions

edytowany 1x, ostatnio: pragmaticdev
Mariusz Bruniewski
Mariusz Bruniewski
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Świecie
0

Czy mogę zmienić pliki w lazarusie? Customlistbox.inc czy to zgodne z licencją. LCLType StdCtrls i inne pliki pp? Bo będzie śmigał komponent :-) Bo namieszali w plikach. W delphi było to w Windows. W lazarusie w kilku klasach. Sami w komentarzu plików pisali o delphi :-) więc odnosili się do niego @furious programming a ja myślałem, że stworzyli środowisko od nowa:-)


Umysł pozytywny szuka sposobów, jak coś wykonać; umysł negatywny wyszukuje sposoby, by uzasadnić, że czegoś nie można zrobić.
~~ Napoleon Hill ~~
edytowany 6x, ostatnio: Mariusz Bruniewski
PR
PR
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 4 lata
  • Postów:204
0

Można dowolnie modyfikować Lazarusa, LCL oraz FPC.

Zobacz pozostałe 3 komentarze
Mariusz Bruniewski
Mariusz Bruniewski
Czy to w Narzedzia -> [Window Title] Potwierdzenie [Content] Chcesz przebudować Lazarusa według profilu: Normalne IDE? [Tak] [Nie]
Mariusz Bruniewski
Mariusz Bruniewski
Oki poszło dzięki :-)
PR
pragmaticdev
Dodatkowo jak ściągniesz źródła to masz tam też skrypty do budowania. Jest też zewnętrzne narzędzie - https://wiki.freepascal.org/fpcupdeluxe tym narzędziem fajnie wszystko można zainstalować, razem z popularnymi libkami jak mormot.
WY
Wypierdzisty
Dopiero zaczynam przygodę z delphi to tak przyjazny użytkownikowi język?
PR
pragmaticdev
Nie. Jak zaczynasz przygodę z programowaniem to odradzam Delphi. Delphi jest strasznie drogie same w sobie, jest strasznie zacofane i dopiero goni konkurencje (nieustannie), mało popularne, mała społeczność, mniej ofert pracy. Polecam iść w coś jak .net, jvm, js czy coś przyjemniejszego i darmowego.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:23 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
0
Mariusz Bruniewski napisał(a):

Bo namieszali w plikach. W delphi było to w Windows. W lazarusie w kilku klasach.

W kilku modułach, nie klasach, a konkretnie w dwóch modułach. I to nie jest deklaracja takiego samego typu, a dwóch różnych typów danych — ten w module StdCtrls przeznaczony jest dla LCL i widgetsetów, a ten w Windows dla WinAPI. A Ty jak mieszasz LCL z WinAPI, pomijając widgetsety, to się nie dziw, że nic Ci nie działa jak należy.

Sami w komentarzu plików pisali o delphi

W wielu miejscach są komentarze, w których podane są informacje dotyczące zgodności z Delphi — dlaczego coś jest tak zadeklarowane a nie inaczej. Kompilator nie tylko Delphi wspiera, ale też inne dialekty jak choćby TP czy ISO Pascal i masę procesorów, nie tylko x86 i x64. Natomiast FCL i LCL jest napisany w taki sposób, aby wspierał wszystkie najpopularniejsze platformy, takie jak Windows, Unix, macOS, Solaris i wiele innych, a nie tylko x86. Twoje stare Delphi to się może schować.

[…] a ja myślałem, że stworzyli środowisko od nowa:-)

Środowisko jakim jest Lazarus, jest stworzone od nowa. LCL jako biblioteka komponentów też jest stworzony od nowa. Wszystko jest stworzone od nowa i rozwijane od ponad 20 lat. A to, że LCL jest silnie zgodny z VCL, to kolejny jego atut.

Sugeruję w końcu się douczyć, zrozumieć i zapamiętać to czym jest środowisko, czym kompilator a czym biblioteka komponentów, bo ciągle wszystko mieszasz i nigdy nie wiadomo o co Ci chodzi.


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
Mariusz Bruniewski
Mariusz Bruniewski
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Świecie
0

Taki kod zamieszczony po uses pozwala mi na sprawdzenie gdzie leży błąd:
type
TOwnerDrawState = Windows.TOwnerDrawState;

lub

type
TOwnerDrawState = LCLtype.TOwnerDrawState;

private
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
protected
procedure DrawItem(Index: Integer; Rect: TRect;State: TOwnerDrawState); virtual;

Kopiuj
type 
   TOwnerDrawState = Windows.TOwnerDrawState;

// kompiluje
procedure TL_ListBox.CNDrawItem(var Message: TWMDrawItem);
var
  State: TOwnerDrawState; 
begin
  with Message.DrawItemStruct^ do
  begin
    State := TOwnerDrawState(LongRec(itemState).Lo); //<-------
(...)

// nie kompiluje
procedure TL_ListBox.DrawItem(Index: Integer; Rect: TRect;
  State: TOwnerDrawState);
var
  Flags: Longint;
  Data: String;
begin
  if Assigned(FOnDrawItem) then FOnDrawItem(Self, Index, Rect, State) else // <------- wywala Error: Incompatible types: got "WINDOWS.TOwnerDrawState" expected "LCLTYPE.TOwnerDrawState" state
(...)

Kopiuj
type
TOwnerDrawState = LCLtype.TOwnerDrawState;  

// nie kompiluje
procedure TL_ListBox.CNDrawItem(var Message: TWMDrawItem);
var
  State: TOwnerDrawState; 
begin
  with Message.DrawItemStruct^ do
  begin
   // State := TOwnerDrawState(LongRec(itemState).Lo); //<-------
(...)
// kompiluje
procedure TL_ListBox.DrawItem(Index: Integer; Rect: TRect;
  State: TOwnerDrawState); 
var
  Flags: Longint;
  Data: String;
begin
  if Assigned(FOnDrawItem) then FOnDrawItem(Self, Index, Rect, State) else //<-------
(...)


Umysł pozytywny szuka sposobów, jak coś wykonać; umysł negatywny wyszukuje sposoby, by uzasadnić, że czegoś nie można zrobić.
~~ Napoleon Hill ~~
edytowany 5x, ostatnio: Mariusz Bruniewski
WL
Eureka! Miesiąc temu o tym pisałem w tym wątku; 27 marca dokładnie. Ale rozumiem, wolisz własne prawdy objawione.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:23 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
2

Następnym razem dorzuć na końcu posta jakąś puentę, zadaj pytanie albo napisz, że problem rozwiązany, bo póki co nie wiadomo czego jeszcze chcesz, czy się pochwalić, czy zapytać. No nie wiadomo.


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.
WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
0
furious programming napisał(a):
wloochacz napisał(a):

Zawsze zakładałem że w FPC jest dokładnie tak samo.
Nie jest?

W tym przypadku (wątku) chodzi o to, że typ danych o nazwie TOwnerDrawState jest zadeklarowany osobno w co najmniej dwóch modułach, co powoduje, że są to różne typy danych z punktu widzenia kompilatora (zresztą nawet różnią się liczbą enumów). Dlatego bardzo istotne jest to, który moduł będzie w uses zadeklarowany jako pierwszy.

Ano tak.
Nawet w komentarzu napisałem jak sobie z tym poradzić...

To jest standardowy konflikt identyfikatorów typów, i bez skonkretyzowania o który chodzi (prefiksując go nazwą modułu źródłowego), kompilator nie ma innej opcji jak skorzystać po prostu z pierwszego napotkanego. Myślę, że w Delphi też tak było i jest.

Oczywiście że tak jest.

OP niestety nadal nie próbuje zrozumieć dlaczego jego kod się nie kompiluje i nadal nie próbuje znaleźć odpowiednich informacji w dokumentacji. Bo zamiast to zrobić, woli pisać dziwne posty, w dodatku w taki sposób, aby w nich wywyższać stare i praktycznie bezużyteczne dziś środowisko.

Typowe dla typa ;-)

Mariusz Bruniewski
Mariusz Bruniewski
Typ nie typ. @wloochacz wszystko rozumie, tylko piszę bo mogliście coś przeoczyć.
PR
PR
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 4 lata
  • Postów:204
1

Z tego kodu wyżej tyle wynika, że dwa moduły przesłaniają się poprzez odpowiednie załadowanie w uses, natomiast deklaracja typu wtóry raz go przesłania. Dlatego później kompilator odnosi się do typu z LCL lub Windows. Ja bym nie używał typów z Windows bo to psuje najfajniejsza funkcje z Lazarusa - to, że LCL jest multi platformowy i ma swoje implementacje na Windows, Linuxa oraz MacOS. Ja tworząc kontrolkę pod LCL zaimplementował bym pod wszystkie 3 systemy - wtedy to ma sens. Natomiast jeśli znany jest Tobie tylko Windows, to użył bym typu z Windows i olał LCL, niemniej należy być świadomym, tego co się robi.

Mariusz Bruniewski
Mariusz Bruniewski
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Świecie
0

@pragmaticdev dobrze piszesz, lecz kod zawiera createparams itp. Zatem w uses musi być Windows.


Umysł pozytywny szuka sposobów, jak coś wykonać; umysł negatywny wyszukuje sposoby, by uzasadnić, że czegoś nie można zrobić.
~~ Napoleon Hill ~~
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:23 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
0

Metoda CreateParams jest własnością klasy TWinControl, która to zadeklarowana jest w module Controls. Przyjmuje ona parametr typu TCreateParams, który zadeklarowany jest w module LCLType. Mało tego, w ciele tej metody nie ma niczego zależnego od platformy, bo być nie może — wtedy LCL przestałby być multiplatformowy.

Więc o jakim Windows w ogóle mowa? :|


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
Mariusz Bruniewski
Mariusz Bruniewski
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Świecie
0

Coś zaczyna się dziać i bez nowego komponentu. Być może na tym etapie zmienię kod z Waszą pomocą. W pliku dodaję i zmieniam **C:\lazarus\lcl\stdctrls.pp **

Kopiuj
{ TCustomListBox }

 //TListBoxStyle = (lbStandard, lbOwnerDrawFixed, lbOwnerDrawVariable, lbVirtual); // lazarus
 TListBoxStyle = (lbStandard, lbOwnerDrawFixed, lbOwnerDrawVariable, lbVirtual, lbVirtualOwnerDraw); 
 // delphi 7 - spokojnie można zostawić styl lazarusa, gdyż zawiera styl lbVirtual, lecz brakuje property OnData;

 TLBGetDataEvent       = procedure(Control: TWinControl; Index: Integer; var Data: string) of object; // dodaję
 TSelectionChangeEvent = procedure(Sender: TObject; User: boolean) of object;
 TListBoxOption = (
   lboDrawFocusRect // draw focus rect in case of owner drawing
   );
 TListBoxOptions = set of TListBoxOption;

 { TCustomListBox }

 TCustomListBox = class(TWinControl)
 private const
   DefOptions = [lboDrawFocusRect];
 private
   FCount : integer; // dodaję
   FOnData: TLBGetDataEvent; // dodaję

   procedure SetCount(const Value: Integer);   
   (...)   

 public
 (...)
    // property Count: Integer read GetCount; // for Delphi compatability 
    // -  taki zapis w lazarusie jest  **read only** dla ListBox1.Count := 
    property Count: Integer read GetCount write SetCount;   // delphi 7
    property OnData: TLBGetDataEvent read FOnData write FOnData;  // dodaję 
   (...)

W pliku C:\lazarus\lcl\include\customlistbox.inc

Kopiuj
procedure TCustomListBox.SetCount(const Value: Integer);
begin
  FCount := Value;
end;

procedure TCustomListBox.CreateParams(var Params: TCreateParams);
const
  MultiSelectStyle: array[Boolean] of DWord = (LBS_MULTIPLESEL, LBS_EXTENDEDSEL);
begin
  inherited CreateParams(Params);
  if Sorted then
    Params.Style := Params.Style or LBS_SORT;
  if MultiSelect then
    Params.Style := Params.Style or MultiSelectStyle[ExtendedSelect];
  if Columns > 1 then
    Params.Style := Params.Style or LBS_MULTICOLUMN;

  case Style of
    lbOwnerDrawFixed: Params.Style := Params.Style or LBS_OWNERDRAWFIXED;
    lbOwnerDrawVariable: Params.Style := Params.Style or LBS_OWNERDRAWVARIABLE;
    lbVirtual : Params.Style:= Params.Style and (not LBS_HASSTRINGS) or LBS_NODATA or LBS_OWNERDRAWFIXED;
 // lbvirtual dodaję
  end;
  Params.Style := Params.Style or
    (WS_HSCROLL or WS_VSCROLL or LBS_NOINTEGRALHEIGHT or LBS_HASSTRINGS or LBS_NOTIFY);
end;    

Wywołanie zmienionego kodu w lazarusie. - tak jak to działa pod Delphi 7 prawidłowo wyświetla miliony linii w kontrolce TListBox w sekundy:

Kopiuj
var
  Form1: TForm1;
  MyList : TStringlist;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyList.Free;
end;

procedure TForm1.ListBox1Data(Control: TWinControl; Index: Integer;
  var Data: string);
begin
    Data := MyList[Index];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyList := TStringlist.Create;
  ListBox1.Style := lbVirtual;
end;

procedure TForm1.Button1(Sender: TObject);
begin
 MyList.LoadFromFile('ex.txt');
 ListBox1.Count := MyList.Count;
end;

end.

W Narzędzia Lazarus-> [Window Title] Potwierdzenie [Content] Chcesz przebudować Lazarusa według profilu: Normalne IDE? [Tak] [Nie] — przebudowany Lazarus.


Umysł pozytywny szuka sposobów, jak coś wykonać; umysł negatywny wyszukuje sposoby, by uzasadnić, że czegoś nie można zrobić.
~~ Napoleon Hill ~~
edytowany 9x, ostatnio: Mariusz Bruniewski
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:23 minuty
  • Lokalizacja:Tuchów
  • Postów:12166
0

Sugeruję nie dłubać przy bazowych klasach LCL i nie modyfikować ich kodu źródłowego na własną rękę, bo z tych samych klas zbudowany jest cały Lazarus. Tak więc jeśli nadupczysz w nich głupot i przebudujesz Lazarusa, to popsujesz całe IDE (wszystkie kontrolki danego typu we wszystkich oknach w IDE szlag trafi) i będziesz musiał je reinstalować. :D

Jak chcesz zrobić swój komponent, to napisz swoją klasę i na niej się baw. Możesz też skopiować cały kod np. TCustomListBox, zmienić mu nazwę na własną, doinstalować do palety komponentów i na nim eksperymentować do woli. Ale nie rób tego z bazowymi klasami LCL.


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 4x, ostatnio: flowCRANE
Zobacz pozostałe 6 komentarzy
flowCRANE
Aaa, spoko — skoro się nie znam to spadam, powodzenia życzę. Tylko z drugiej strony, skoro się nie znam, to po cholerę ciągle mnie wołasz do swoich wątków? Po to żeby ci bić brawo, że coś tam dłubiesz? Do Rubika zadzwoń, on się zna na klaskaniu to może kogoś dobrego podeśle.
flowCRANE
Poza tym jak byk widzę, że MODYFIKUJESZ bazowe klasy LCL, skoro sam napisałeś, że „W pliku dodaję i zmieniam C:\lazarus\lcl\stdctrls.pp”, czyli zmieniasz kod podstawowej klasy LCL, z której korzystają również formularze Lazarusa, bo w sobie mają te kontrolki. Więc z kogo głupiego chcesz zrobić? IMO jedynie z siebie.
flowCRANE
Dlatego daruj sobie teksty pokroju tych, że się nie znam na Lazarusie. Znam to IDE bardzo dobrze i pracuję z nim od ponad 6 lat. A Ty ledwo je dotknąłeś i masz czelność innych niedouczonymi nazywać. Miłej zabawy życzę, tylko nie przylatuj tu za kilka dni z płaczem, że IDE nie działa lub działa dziwnie. :D
PR
pragmaticdev
Przede wszystkim to jest problem XY. Gość wymyślił władowanie milionów rekordów do kontrolki bo uważa, że ma wzrok bystrzejszy nic algorytmy.... My ty wszyscy jedyne co robimy to marnujemy prąd i tańczymy jak wariat zagra. Do tego jest big data pomijając, że nic tam nie wykopie bo to gra losowa. Ja chyba już nie udzielę się więcej w tematach, które mają nadać sens życiu Mariusza bo tylko po to one są.
Mariusz Bruniewski
Mariusz Bruniewski
@furious programming z całym szacunkiem dla Ciebie. Jeśli chcesz dobrać się do sprzętu co robisz? Wplywasz kodem na sprzęt, aby odczytać dane. Co robisz kiedy chcesz, aby Twój kod działał? Modyfikujkesz. Codziennie hakujesz sprzęt kodem. Zatem programista to ten, ktory wyciaga informacje + korzysta z tych informacji.To tyle.
WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
2
Mariusz Bruniewski napisał(a):

Coś zaczyna się dziać i bez nowego komponentu. Być może na tym etapie zmienię kod z Waszą pomocą. W pliku dodaję i zmieniam **C:\lazarus\lcl\stdctrls.pp **

To jest jeden z głupszych pomysłów jakie ostatnio widziałem.
@furious programming już Ci napisał, że to jest pomysł z czapy.

Generalnie nie powinno się tak robić, ponieważ zamykasz sobie drogę prostej migracji do nowszych wersji.
Oczywiście możesz dalej zaklinać rzeczywistość, że "niczego nie zmieniasz tylko dodajesz" (sic!) i rób jak chcesz.
Ale wbij sobie w końcu do głowy, że to Ty się nie znasz i robisz wszystko na opak i byle jak; byle dopchnąć kolanem, związać sznurkiem i "działa".

BTW - skoro niczego nie zmieniasz a tylko dodajesz to może wykorzystać standardową metodę dziedziczenia do własnej klasy i nadpisania zmian jak się chce?
Że się nie da zrobić pewnych rzeczy?
Oczywiście, że się da (znajomość biblioteki DDetours się kłania), włącznie z dostępem do wszystkiego (np. do sekcji `private') jak się uprzeć.
I dalej będzie to lepsze i bezpieczniejsze rozwiązanie niż gmeranie w kodzie źródłowym bibliotek standardowych.

Mariusz Bruniewski
Mariusz Bruniewski
Jak zauwazyles nie padnie lazarus. Wszystko działa tak jak powinno nie przeniesie się to w rzaden ŻADEN sposób na pozostałe kontrolki. Bazuje w obrębie TCustomListBox i dodatkowo oprogramowanie lbVirtual. Panowie troche luzu :-) No dobrze zauważcie w lazarusie dla TListBox jest styl lbVirtual. Jak z nmiego korzystac cisza. Mam czekać, aż twórcy za kilka lat opracowują jak z niego korzystać. Skoro jest niepełny i brakuje ondata to domyśliłem się, że kod musi pochodzić z Delphi. Po drugie pisza, że Property Count jest tożsame z delphi a nie jest.
Mariusz Bruniewski
Mariusz Bruniewski
Może inaczej jeśli są dwa wybory. Ja dodam trzeci czy to w jakiś sposób zakłóca bibliotekę LCL? W żaden sposób. Bo gdy korzystasz z pierwszych dwóch. To korzystasz, ale masz też 3 wybór, który nie wpływa na 2 pierwsze ani te 1 i 2 na trzeci. To o czym mowa?
Mariusz Bruniewski
Mariusz Bruniewski
Po trzecie lazarus umożliwia kodowanie według siebie.zatem liczyli się twórcy tego środowiska , że kod będzie wymagał poprawy. W innym przypadku byśmy nie mieli dostępu do bibliotek ani możliwości przebudowy IDE.
Mariusz Bruniewski
Mariusz Bruniewski
Panikuecie jak przkupki na targowisku. Trzeba być pewnym siebie. Wierzysz, że lazarus jego programiści wszystko ogarneli? Ty musisz ogarnąć wszystko. "A nie; nie zmieniaj" -"Nie radzę" etc.Ty jesteś Bogiem swojej aplikacji czy lazarus...? Głupie pisanie. Programista musi wyjść poza siebie. Myśleć jak Twórca swojej aplikacji jak i twórca całości.
WL
Fajnie to opisałeś; moja polonistka miała na to świetne określenie: pijany sen chorego idioty. A tak już całkiem poważnie, to twoja wiedza o programowaniu jest co najwyżej anegdotyczna. Doczytaj sobie co to jest dowód anegdotyczny - tak właśnie wyglądają twoje opisy z punktu widzenia doświadczonego programisty. A przy okazji - nie piszę oprogramowania dla idiotów (vel gry liczbowe), zatem nie piszcz mi tu o pewności siebie i odwadze bo z mojego punktu widzenia nie masz o tym raczej zielonego pojęcia. Ale rozumiem, że nie zrozumiałeś tego co napisałem. Czyli jak zwykle.
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 3 godziny
  • Postów:5108
0

muszę przyznać że podoba mi się pomysł z modyfikowaniem standardowych bibliotek

nie dlatego że to dobry pomysł, ale dlatego że można

edytowany 1x, ostatnio: WeiXiao
Mariusz Bruniewski
Mariusz Bruniewski
Skoro Lazarus na to pozwala. Psychologicznie wygląda to tak. Sam jest niepewny swojego twórcy. Borlanad nie pozwalał, czyli wiedział co z czym się je ...
Mariusz Bruniewski
Mariusz Bruniewski
Dzięki chociaż ktoś..
WL
Nie ma czegoś takiego, że "Borland nie pozwalał". Zawsze to było możliwe, o ile był dostęp do źródeł. A nie w każdej wersji był. Zatem nie pisz kolejnych głupot @Mariusz Bruniewski
Mariusz Bruniewski
Mariusz Bruniewski
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Świecie
0

Dziękuję wszystkim za wyrażenie opinii w moim poście. Temat uważam za zamknięty. Okazało się, że należało szukać odpowiedzi tam gdzie nie pisaliście.
łac. Iucundi acti labores (miłe są trudy zakończone)

Wyobraźnia jest ważniejsza od wiedzy, ponieważ wiedza jest ograniczona. - Albert Einstein

Wyobraźnia bez wiedzy może stworzyć rzeczy piękne. Wiedza bez wyobraźni najwyżej doskonałe.- Albert Einstein

Logika zaprowadzi Cię z punku A do punktu B. Wyobraźnia zaprowadzi Cię wszędzie. - Albert Einstein


Umysł pozytywny szuka sposobów, jak coś wykonać; umysł negatywny wyszukuje sposoby, by uzasadnić, że czegoś nie można zrobić.
~~ Napoleon Hill ~~
edytowany 1x, ostatnio: Mariusz Bruniewski
Pepe
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 godzin
  • Postów:496
0

Panie szefie! Powinieneś stopy całować niektórym forumowiczom za ich czas i wiedzę, którą starają ci się przekazać. A ty tylko się wymądrzasz i strzelasz fochy. Ludzie chcą ci pomóc, a ty z nich drwisz i śmiesz pisać, że się nie znają? Notorycznie piszesz jakbyś był co najmniej upalony, zero poprawnej polszczyzny, chaos i zarozumialstwo! Ogarnij się człowieku i wesprzyj te forum tym milionem, jak już wygrasz w to lotto...


Zobacz pozostałe 4 komentarze
Mariusz Bruniewski
Mariusz Bruniewski
@furious programming kiedyś wspomniał, że dawno komponentów nie pisał. @wloochacz to czarodziej, który krytykuje a nic od siebie nie daje @pragmaticdev Wschodząca gwiazda. @kAzek dziekuje
Pepe
Jakby to napisać, żeby Cię nie obrazić. Bo mimo wszystko pocieszny jesteś. Mnie proszę już nie pomagaj. Przytoczony przez ciebie mój post o odczycie hardware jest nieaktualny, nie będę kontynuował tematu. Napisałem tutaj kilka słów, bo przykro czytać, jak ludzie się starają, a ty to masz gdzieś bo Twoja wyobraźnia Ci mówi, że wszyscy błądzą, a ty wiesz lepiej, tylko nie wiesz jak. Nawet gdyby ktoś się mylił, doceń, że poświęcił czas, żeby rozkminić o co ci w ogóle chodzi...
Mariusz Bruniewski
Mariusz Bruniewski
Czerpie wiedze od geniuszy programowania, Skoro oni nie znają odpowiedzi to muszę liczyć tylko na siebie. proste @Pepe
Mariusz Bruniewski
Mariusz Bruniewski
Mnie nikt nie urazi. Tak samo jak mojego kodu. Możecie pisać po co tyle danych do kontrolki pchać. Cel jest jeden oko ma rejestrować a mózg przetwarzać. Nigdzie nie jest napisane, że masz na tacy dostać 12 bitów tekstu. Jest XXI wiek i trzeba mózgownicę wytężyć.
flowCRANE
@Mariusz Bruniewski: przestań mnie wołać do swoich wątków, a przede wszystkim bredzić na mój temat.
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)