Obsługa plików z formatami w C#

Obsługa plików z formatami w C#
N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Witam. Piszę prosty program do obsługi i formatowania plików tekstowych, taki bardzo uproszczony Word. Dodam, że jest to mój pierwszy program w języku C#. Poprzez formatowanie rozumiem proste operacje na fragmencie tekstu, tj. zmiana rozmiaru, koloru, pogrubienie, pochylenie itp. Program ma umieć wczytywać plik, sformatować tekst i zapisać go z formatem. Nie pytam tu o sam fakt operacji na plikach, tylko jak rozwiązać zapamiętanie formatu? Pierwszy (choć nie wiem czy dobry) pomysł był taki, że jak np. chcę pogrubić fragment tekstu, to de'facto obudowuję go znacznikami, np znanymi z html < b > ... < /b >. Tylko jak to zrobić, żeby był widoczny efekt, a nie znaczniki? Jakiego rozszerzenia pliki polecacie do rozwiązania tego problemu? Pliki *.txt oczywiście odpadają co się rozumie samo przez się, zastanawiam się tylko, czy bazować tu np. na *.rtf czy może zaimplementować jakieś własne rozszerzenie? Z góry dziękuję za wszelkie porady.

edytowany 1x, ostatnio: nikki15
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
1

Myślę, że RTF Ci starczy i nie ma sensu wprowadzać nowego formatu i pisać do niego silnika. Chyba, że masz zamiar się trochę pobawić to owszem, możesz spróbować. A do RTF istnieje dużo bibliotek, które pozwolą Ci obsłużyć ten format.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Dzięki za szybką odpowiedź. A czy mógłbyś polecić kilka takich bibliotek? To sobie przejrzę co one potrafią i co mi się przyda :)

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Możesz użyć RichTextBox z Windows Forms.

N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

co zrobić, żeby po zaznaczeniu odpowiedniego fragmentu tekstu i naciśnięciu przycisku odpowiadającego za pogrubienie, zdarzenie zostało obsłużone? Tak jak w wordzie - możemy zaznaczyć tekst i użyć skrótu ctrl+B albo wcisnąć przycisk mając zaznaczony tekst. Mamy tu do czynienia ze zdarzeniem w zdarzeniu - zdarzeniem "zewnętrznym" jest zaznaczenie tekstu, a zdarzeniem "wewnętrznym" jest kliknięcie w przycisk. Jak to ogarnąć? I jeszcze jedno. Przeglądając klasę RichTextBox chciałam na start zrobić cokolwiek na zaznaczonym tekście. Użyłam więc metody:

Kopiuj
 private void poleTekstowe_SelectionChanged(object sender, EventArgs e)
        {

            ((RichTextBox)sender).SelectedText.ToUpper();
        }

która wydaje mi się, że powinna zaznaczony ciąg znaków przerobić na duże litery, jednak tak się nie dzieje. Dlaczego?

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Tak, to są 2 zdarzenia, ale myślę, że wystarczy w zdarzeniu przycisku pogrubić czcionkę, po prostu użyć właściwości i zwyczajnie pogrubić. Drugie zdarzenie SelectionChanged nie jest tu potrzebne. I Wydaje mi się, że źle robisz zmienianie na duże litery. SelectedText zwraca tylko zaznaczony tekst w formie stringu. Nic tym nie zrobisz. Musisz przypisać nowy string, który jest już zamieniony na duże litery.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
somekind
Czyli richTextBox.SelectedText = richTextBox.SelectedText.ToUpper();
N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Witam ponownie :) dzięki za podpowiedzi. Trochę nad tym siedziałam, ale to rozpracowałam, faktycznie RichTextBox to wprost idealne narzędzie do tego typu problemu. Pozdrawiam

N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Mam jeszcze jedno pytanie odnośnie tego tematu. Jak ręcznie (kodowo) ustawić, żeby czcionka była jednocześnie np pogrubiona i pochylona?
Samo pogrubienie ustawiam tak:

Kopiuj
 private void pogrubienie_przycisk_Click(object sender, EventArgs e)
        {
            if (poleTekstowe.SelectionFont.Style == FontStyle.Bold)
                poleTekstowe.SelectionFont = new Font(poleTekstowe.SelectionFont.FontFamily,
                                                  poleTekstowe.SelectionFont.Size, FontStyle.Regular);
            else
                poleTekstowe.SelectionFont = new Font(poleTekstowe.SelectionFont.FontFamily,
                                                  poleTekstowe.SelectionFont.Size, FontStyle.Bold);
        } 

z kursywą jest analogicznie tylko ustawiam

Kopiuj
 FontStyle.Italic

Gmatwam się natomiast jak czcionka już była pogrubiona i chcę dodać kursywę. Jak to osiągnąć?

Spine
  • Rejestracja:około 22 lata
  • Ostatnio:4 minuty
  • Postów:6656
1

FontStyle.Bold | FontStyle.Italic

Nie używam C#, ale... http://bit.ly/Y6qmPo


🕹️⌨️🖥️🖱️🎮
edytowany 2x, ostatnio: Spine
N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Dzięki :) ja używałam && i nie chciało przejść ;) teraz działa

edytowany 1x, ostatnio: nikki15
Spine
  • Rejestracja:około 22 lata
  • Ostatnio:4 minuty
  • Postów:6656
2

A wiesz dlaczego nie łączy się tych wartości logicznym ANDem, tylko robi się to bitowym ORem?

Załóżmy, że identyfikator Italic to (dwójkowo) 0001, a identyfikator Bold to 0010, jak zrobisz nawet bitowego AND, to otrzymasz 0000, jak zrobisz bitowego OR, to otrzymasz 0011, zaś jak zrobisz logicznego ANDa, to otrzymasz prawdopodobnie True, bo obie liczby są różne od 0 i ich wartość logiczna to True.


🕹️⌨️🖥️🖱️🎮
N1
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Dzięki za pomoc i wyjaśnienie :)

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)