Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Program w C# bardz długo wyswietla dane wczytanego pliku binarnego

14 Jan 2019 13:03 369 5
  • Level 12  
    Witam

    Próbuje napisać edytor plików binarnych, niestety program bardzo długo wczytuje pliki binarne. Samo wczytanie pliku to chwila ale nprzykład wyświetlenie wczytanego pliku w oknie to 15 sekund przy pliku 8MB

    Code: csharp
    Log in, to see the code
  • Level 24  
    Ale powiedz mi, w jakim celu czytasz cały plik do pamięci?
    Nie lepiej skojarzyć to z suwakiem i wczytać tylko ten fragment który Cię interesuje?

    Ale spróbujmy:

    Dodano po 6 [minuty]:

    Code: csharp
    Log in, to see the code

    Plik 13MB
    Czas wykonania: 20,943 sek

    Mój kod:
    Code: csharp
    Log in, to see the code

    Plik 13MB
    Czas wykonania: 18,625 sek

    Zatem podobnie :)

    Ale zauważam jedno, że bardzo długo wczytuje do richTextBox.
  • Level 12  
    funak wrote:
    Ale zauważam jedno, że bardzo długo wczytuje do richTextBox.

    Ponieważ po edycji pliku chcę go zapisać, będą funkcje w programie które będą zmieniać dane w pliku i po zmianach go zapiszę jako nowy plik.

    Moderated By adamas_nt:

    Nie cytuj postów w całości. To nie urzędowa korespondencja ;) Nadmiar, zawarty w poście wyżej, z wyjątkiem jednego zdania (cytowanie selektywne), pozwoliłem sobie usunąć.

  • Level 24  
    Zatem wrzuć goły plik do pamięci, zajmie 8MB przykładowo.
    Skojarz ze suwakiem i wyświetlaj dynamicznie każdy wiersz wprost z Twojej tablicy.

    Druga sprawa, i tak musisz czuwać nad walidacją danych po każdej edycji znaku, zatem może skorzystaj z innych kontrolek, które po zlepieniu będą wyglądały podobnie jak RichTextBox, chociażby ListBox.
    Chociaż przy ListBox pasowałoby jednak pokryć metodę wyświetlania, aby uwzględnić kolorowanie wartości.

    Program w C# bardz długo wyswietla dane wczytanego pliku binarnego

    Ugóry richTextBox, na dole ListBox.
  • Level 12  
    Samo wczytanie pliku bez jego wyświetlania to chwila

    Code: csharp
    Log in, to see the code
  • Level 33  
    Musisz wyświetlać tylko to co widzi użytkownik, albo niewiele więcej. Wczytywać też nie możesz zawsze całości.
    Najprościej wyłączyć pionowy pasek przewijania w RichTextBox i wstawić osobny. Na StackOverflow znajdziesz jak sprawdzić, ile linijek się mieści. Tyle przekaż do RichTextBox. Choć może lepiej by było zamiast tego napisać własną kontrolkę...
    Skąd twierdzenie, że przy jednokrotnym odczycie całości pliku mapowanie go w pamięci przyśpieszy odczyt?