Uzywanie funkcji

NI
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 12 lat
0

Witam! Mam problem ktory probuje szybko rozwiazac! Otoz mam Unit1 i w nim funkcje i chcialbym tych funkcji uzyc w Unit2 jak to zrobic ?
Probowalem Unit1.Form1. ale te funkcje sa nie widocznie w zaden sposob ich nie widzi.

Prosze o podpowiedz co zrobic zeby funkcje z Unit1 byly widocznie w Unit2 z gory dziekuje za odpowiedz!

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 8 godzin
0

w unit2 poniżej "implementation" dodaj "uses unit1;".

NI
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 12 lat
0

Oczywiscie taki kod znajduje sie w Unit2 dodam ze unit2 to jest "nowy watek" (Thread Object).
I niestety nadal nie widzi funkcji z Unit1 widzi wszystkie zmienne widzi procedury takie jak onclick itp. ale funkcji wlasnie nie.

UR
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 14 lat
0

A gdzie sa te deklaracje tych funkcji, przed czy po implementation? Czy sa to moze prywatne funkcje, publicze, czy jakie? Jesli sa prywatne albo nie wystepuja w w odpowiednim bloku, to masz odpowiedz dlaczego unit2 ich nie widzi (czytaj 'scope').

NI
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 12 lat
0

Fakt troszke brakuje informacji w moich postach wiec teraz postaram sie wszystko wyjasnic a wiec:

nie znajduje sie ani w public ani private to po prostu mam tak:

Kopiuj
  private
    { Private declarations }
  public
   { public declarations }
  end;

funkcje sa pod

Kopiuj
implementation

uses Unit2;


{$R *.dfm}

Probowalem przeniesc implementation pod wszystkie funkcje ale wtedy jest blad w uses2 unit2;
probowalem przeniesc wszystko pod funkcje ale wtedy wyskakuje od razu blad przy bloku begin.
Pod public declarations probowalem dolepic ta funkcje tak:

function funkcja(zmienna : ShortString): ShortString;
kolejnie dorobilem blok published ale tez nie wykrywa i sypie bledami od razu.

Ps. wszystkie funkcje z Uni1 znajduja sie dokladnie pod:

Kopiuj
implementation

uses Unit2;


{$R *.dfm}

Chcialbym jeszcze dodac ze to nie jest tak ze jak tylko napotkam jakas przeszkode od razu pisze na forum. Probuje na wszystkie sposoby rozwiazac problem szperam w google ale gdy juz nie widze odpowiedzi na dany to napisze na forum...

Szukalem scope na forum za wiele nie ma. Google tez za duzo niestety mi nie mowi...

Jak zwykle odpowiedz na moje pytanie byla prosta... Poradzilem sobie dodajac przed impementation po prostu:

function funkcja(zmienna : ShortString): ShortString;

:)

UR
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 14 lat
0

to sie nazywa ...forward declaration... :) poczytaj tez o ...scope...

Mialem wlasnie napisac, ale dobrze ze sobie poradziles sam:) Oby tak dalej

NI
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 12 lat
0

Oczywiscie dzieki wielkie za wskazowki ;) na pewno poczytam :)

SI
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
0
Nieobeznany napisał(a)

Jak zwykle odpowiedz na moje pytanie byla prosta... Poradzilem sobie dodajac przed impementation po prostu:

function funkcja(zmienna : ShortString): ShortString;

uru napisał(a)

to sie nazywa ...forward declaration... :) poczytaj tez o ...scope...

Mialem wlasnie napisac, ale dobrze ze sobie poradziles sam:) Oby tak dalej

Niestety, kolego uru, nie o forward declaration tutaj chodzi. Problemem jest brak definicji funkcji w sekcji publicznej modułu.

Aby funkcje, procedury, zmienne, typy były dostępne w innych modułach, które korzystają z naszego modułu, musimy je zadeklarować w sekcji publicznej, czyli po słowie interface, a przed słowem implementation. Autor wątku to właśnie uczynił, co rozwiązało problem

Jeśli chodzi o forward declaration, oto przykład:

Kopiuj
function MyFunc: Integer;
begin
  MyProc;
end;

procedure MyProc;
begin
  // Instrukcje
end;

Kompilator zgłasza błąd: "Undeclared identifier 'MyProc'", gdyż w momencie napotkania definicji funkcji MyFunc nie wie jeszcze co to jest MyProc. Można temu zaradzic zamieniając miejscami definicje funkcji i procedury, albo zastosować forward declaration

Kopiuj
procedure MyProc; forward

function MyFunc: Integer;
begin
  MyProc;
end;

procedure MyProc;
begin
  // Instrukcje
end;

Teraz jest wszystko OK. Najpierw deklarujemy sam nagłówek procedury, a w dalszej części modułu umieszczamy jej definicję

UR
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 14 lat
0

Niestety, kolego uru, nie o forward declaration tutaj chodzi. Problemem jest brak definicji funkcji w sekcji publicznej modułu.

Delphi help: The interface section napisał(a)

The interface declaration of a procedure or function includes only the routine's heading. The block of the procedure or function follows in the implementation section. Thus procedure and function declarations in the interface section work like forward declarations, although the forward directive isn't used.

Delphi help: Forward and interface declarations napisał(a)

The forward directive has no effect in the interface section of a unit. Procedure and function headers in the interface section behave like forward declarations and must have defining declarations in the implementation section. A routine declared in the interface section is available from anywhere else in the unit and from any other unit or program that uses the unit where it is declared.

To nie jest usprawiedliwienie moich slow, czy mojego nieoczytania. Przepraszam za moja mape skojarzen. Tak czy inaczej znalazlby bez wiekszego trudu.
A co do forward declaration w helpie borlanda to wyjasnione sa na interfejsach...

Ogolnie to idea jest identyczna. Uzywasz czegos, co nie zostalo do konca zdefiniowane w twoim polu widzenia. A poczytałby troche wiecej, a jak to mawiaja na studiach, trzeba wiedziec gdzie szukac. Stad moj blad :)

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)