Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Formularz, binding i akcja do KretS

INTERMEDIATERUNNABLE_LOCALKretUI

Pole `input` z walidacją (`required`, `maxLength`), akcja `greet` wywołująca komendę KretS `greet.make(name: String) -> String`, wynik zapisywany w stanie (`result`), flaga `busy`, komunikat błędu (`error`) i warunek `enabled "form.valid and not busy"`. Kompilacja sprawdza sygnaturę handlera i blok `handlers` manifestu.

Edycja i zapisane wyniki

Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.

Kanoniczne pliki projektu

module Main

fn Start() {
}

fn Shutdown() {
}

// Komenda wywoływana przez akcję interfejsu. Logika działa w osobnym procesie pluginu.
on greet.make(name: String) -> String {
    if len(name.trim()) == 0 {
        throw "Podaj imię."
    }
    return "Cześć, " + name.trim() + "!"
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. fn Start() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. Pusta linia oddziela fragmenty źródła.
  6. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  8. Pusta linia oddziela fragmenty źródła.
  9. // Komenda wywoływana przez akcję interfejsu. Logika działa w osobnym procesie pluginu.Komentarz autora; nie jest wykonywany.
  10. on greet.make(name: String) -> String {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. if len(name.trim()) == 0 {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  12. throw "Podaj imię."Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  13. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  14. return "Cześć, " + name.trim() + "!"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  15. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  16. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

Kod 0; `self-test.json` zawiera wykonane kroki, a klatka pokazuje „Cześć, Ala!”.

Na co uważać

Akcja wskazująca komendę, której nie ma w bloku `handlers` manifestu albo handler o innej sygnaturze — błąd kompilacji projektu.

Wymagania wersji i procedura lokalna

sdk
1.0.0-rc.3+kret.local.3
sdkInfoReports
1.0.0-rc.3
core
1.0.0-test.6.11-draft.1
os
Windows 11 x64
dotnet
.NET 10 runtime

Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.

  1. checkkret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. self-test-interactkretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --input 0/1/0=Ala --click 0/1/1Katalog: project · Oczekiwany kod wyjścia: 0

Wyniki zapisane w pakiecie źródłowym

To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.

# EXPECTED_OUTPUT — KRETUI-I01-FormActionBinding
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:47Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. check  (exit 0, PASS)
> kret check . --json
{
  "format": "kret-diagnostics/1",
  "project": "<project>",
  "succeeded": true,
  "plugin": {
    "id": "LOCAL-KPL-UXM2FRMS",
    "name": "FormActionBinding",
    "version": "1.0.0",
    "profile": "standard",
    "database": false
  },
  "permissions": {
    "required": [],
    "optional": []
  },
  "handlers": {
    "lifecycle": [
      "start",
      "shutdown"
    ],
    "events": [],
    "commands": [
      "greet.make"
    ]
  },
  "diagnostics": []
}

### 2. self-test-interact  (exit 0, PASS)
> kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --input 0/1/0=Ala --click 0/1/1
widok Greeter; logika: izolowany proces pluginu LOCAL-KPL-UXM2FRMS (pid 42196)
test własny: OK; wyniki: <out>\frame

[checkFile {OUT}/frame/self-test.json]
{
  "format": "kretui-self-test/1",
  "view": "Greeter",
  "title": "Powitanie",
  "logic": "isolated-process",
  "pluginProcessId": 42196,
  "hostProcessId": 31108,
  "size": "compact",
  "width": 460,
  "height": 260,
  "ok": true,
  "failures": [],
  "actions": [
    {
      "ok": true,
      "code": "",
      "message": ""
    }
  ],
  "state": {
    "name": "Ala",
    "reply": "Cze\u015B\u0107, Ala!",
    "busy": false,
    "error": ""
  },
  "controls": [
    {
      "path": "0",
      "type": "column",
      "name": "",
      "enabled": true,
      "control": "StackPanel",
      "bounds": [
        0,
        0,
        460,
        236
      ]
    },
    {
      "path": "0/0",
      "type": "text",
      "id": "heading",
      "name": "Formularz \u2192 akcja \u2192 KretS \u2192 stan",
      "enabled": true,
      "control": "TextBlock",
      "bounds": [
        0,
        0,
        460,
        19
      ]
    },
    {
      "path": "0/1",
      "type": "row",
      "name": "",
      "enabled": true,
      "control": "StackPanel",
      "bounds": [
        0,
        19,
        460,
        53
      ]
    },
    {
      "path": "0/1/0",
      "type": "input",
      "name": "Imi\u0119",
      "enabled": true,
      "control": "TextBox",
      "bounds": [
        0,
        19,
        64,
        53
      ]
    },
    {
      "path": "0/1/1",
      "type": "button",
      "name": "Przywitaj",
      "enabled": true,
      "control": "Button",
      "bounds": [
        64,
        19,
        73,
        53
      ]
    },
    {
      "path": "0/2",
      "type": "text",
      "name": "Cze\u015B\u0107, Ala!",
      "enabled": true,
      "control": "TextBlock",
      "bounds": [
        0,
        72,
        460,
        19
      ]
    }
  ],
  "pluginLog": [],
  "hostCalls": 0,
  "denials": 0
}


Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. # EXPECTED_OUTPUT — KRETUI-I01-FormActionBindingOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:47Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-UXM2FRMS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "FormActionBinding",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "required": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  22. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  26. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "commands": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "greet.make"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  30. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  31. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. "diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  34. Pusta linia oddziela fragmenty źródła.
  35. ### 2. self-test-interact (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  36. > kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --input 0/1/0=Ala --click 0/1/1Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  37. widok Greeter; logika: izolowany proces pluginu LOCAL-KPL-UXM2FRMS (pid 42196)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  38. test własny: OK; wyniki: <out>\frameOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  39. Pusta linia oddziela fragmenty źródła.
  40. [checkFile {OUT}/frame/self-test.json]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  41. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  42. "format": "kretui-self-test/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  43. "view": "Greeter",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  44. "title": "Powitanie",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  45. "logic": "isolated-process",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. "pluginProcessId": 42196,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  47. "hostProcessId": 31108,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "size": "compact",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "width": 460,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "height": 260,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "failures": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "actions": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  55. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  56. "code": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  57. "message": ""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  59. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  60. "state": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. "name": "Ala",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  62. "reply": "Cze\u015B\u0107, Ala!",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "busy": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. "error": ""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  66. "controls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  68. "path": "0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  69. "type": "column",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. "name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  75. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  76. 460,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  77. 236Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  78. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  79. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  80. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  81. "path": "0/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  82. "type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  83. "id": "heading",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. "name": "Formularz \u2192 akcja \u2192 KretS \u2192 stan",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  85. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  86. "control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  87. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  89. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  90. 460,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  91. 19Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  92. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  93. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  94. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  95. "path": "0/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "type": "row",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "name": "",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "control": "StackPanel",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  101. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  102. 19,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  103. 460,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  104. 53Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  105. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  106. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  107. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  108. "path": "0/1/0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  109. "type": "input",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "name": "Imi\u0119",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  112. "control": "TextBox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  114. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  115. 19,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  116. 64,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  117. 53Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  118. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  119. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  120. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  121. "path": "0/1/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. "type": "button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  123. "name": "Przywitaj",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "control": "Button",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. 64,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  128. 19,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  129. 73,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  130. 53Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  131. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  132. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  133. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  134. "path": "0/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  135. "type": "text",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. "name": "Cze\u015B\u0107, Ala!",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. "enabled": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  138. "control": "TextBlock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  139. "bounds": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  140. 0,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  141. 72,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  142. 460,Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  143. 19Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  144. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  145. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  146. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  147. "pluginLog": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  148. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  149. "denials": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  150. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  151. Pusta linia oddziela fragmenty źródła.
  152. Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów

null
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.

Zapisane podglądy KretUI

Formularz, binding i akcja do KretS
Podgląd z eksportu — nie odświeża się po zmianie kodu.
Pochodzenie i integralność

KRET_LANGUAGE_KRETUI.zip:KretUI/Examples/INTERMEDIATE_FormActionBinding/example.json

02_PLAYGROUND/EXAMPLES/KRETUI-I01-FormActionBinding.json
SHA-256 EFE93B8AF82401FBE6509CD01727B6885B224EE3EDC8C1E755ECE984E65E0E1A

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KRETUI-I01-FormActionBinding — Formularz, binding i akcja do KretS

KRETUI-I01-FormActionBinding — Formularz, binding i akcja do KretS

🇬🇧 English version below.
PoleWartość
TechnologiaKretUI
PoziomINTERMEDIATE
KlasyfikacjaRUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu)
PlaygroundLOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

Pole input z walidacją (required, maxLength), akcja greet wywołująca komendę KretS greet.make(name: String) -> String, wynik zapisywany w stanie (result), flaga busy, komunikat błędu (error) i warunek enabled "form.valid and not busy". Kompilacja sprawdza sygnaturę handlera i blok handlers manifestu.

Pliki

Plik
Script/Main.krs
Ui/Greeter.kretui
host-policy.json
plugin.kretl

Jak uruchomić

Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.

  1. kret check . --json — walidacja (sygnatura akcji ↔ handler KretS)
  2. kretui-host . --self-test {OUT}/frame --data {DATA} --policy host-policy.json --input 0/1/0=Ala --click 0/1/1 — wpis „Ala” + kliknięcie → komenda KretS w procesie pluginu → stan → klatka

Oczekiwany wynik

Kod 0; self-test.json zawiera wykonane kroki, a klatka pokazuje „Cześć, Ala!”.

Najczęstszy błąd

Akcja wskazująca komendę, której nie ma w bloku handlers manifestu albo handler o innej sygnaturze — błąd kompilacji projektu.

Otwórz cały rozdział ze źródłem →

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności