Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 mar 2024, o 09:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 8 paź 2016, o 16:59 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Witajcie,

mam taki problem: chcę zapisać do pliku tablicę bajtową o wymiarze ok 800 elementów. Robię to tak:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z tego co widzę zapisuje mi do pliku, jak otworzę w Excel'u to każdy element mam w osobnej komórce. Cacy.

Teraz odczyt i z tym mam problem (chcę odczytać z pliku .csv do tablicy bajtowej, którą przetwarzam już po swojemu).

Miałem kilka pomysłów... pewnie głupie ale trudno. Sposób 1:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Sposób 2:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie wiedziałem czy odczyta mi znaki ";" więc by się ich pozbyć:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pierwszy raz w życiu chcę .csv zapisać i odczytać. Samego c# uczę się od niedawna, lecz to jest mi bardzo potrzebne. Ktoś pomoże? Jeszcze raz jak chciałbym zrobić:
- zapisać tablicą bajtową do pliku .csv
- odczytać plik .csv i umieścić w tablicy bajtowej

Będę bardzo wdzięczny za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 17:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

hmm sposobów jest w sumie wiele , zakładając że przecież plik CSV to plik textowy, w którym dane są oddzielone separatorem , Czytasz go więc linia po linii po czym każda linia zostaje rozbita
na tablice stringów zgodnie z separatorem ...

czyli mozna to zrobić tak:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ew można zrobić trochę inaczej niż tak prostacko i mało elegancko jak wyżej np:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



możesz też pakować od razu do DataGridView co jest lepszym, rozwiązaniem masz tu http://stackoverflow.com/questions/6420 ... tagridview
rozwiązań jest wiele ... sposobów też , ...

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 17:43 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Szukałem i gdzieś już natknąłem się na praktycznie taki sam kod jak napisałeś. Tam ktoś pytał jak odczytać bodajże 15 linijkę z pliku .csv. Czy to z tego powodu tutaj jest ten if z 15?

Tutaj dane otrzymam w tablicy ale w string. Jak to przerobić na byte? W C# szczerze powiedziawszy nie wiem, osobiście bym zrobił tak, że rzutowałbym tego string'a na byte a następnie odjął 0x30 (lub 48 decymalnie) zgodnie z tablicą ASCII. Tyle że nie wiem czy C# to przełknie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 17:52 
Offline
Nowy

Dołączył(a): 01 wrz 2016
Posty: 9
Pomógł: 5

Dokładnie ten kod jest całkowicie przerypany z neta, nawet nie został przeanalizowany tylko zmienne na polski zamienione.

Podaj przykładowe dane do odczytu.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 18:00 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Tak naprawdę największy problem stwarza mi dobre przekonwertowanie tablicy string na tablicę byte.

W załączniku dodaję przykładowy plik .csv. Próbuję teraz zrobić to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Lecz pokazuje error dla tab w lini: test = Encoding.UTF8.GetBytes(tab);


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 18:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Oczywiście to sa przykłady nie napisałem też że to napisałem tylko pokazałem kilka ...
sam nie stosuję plików CSV , gdyż jest to powolne przy dużych ilościach danych ...
ale czy to ma znaczenie ?? Nie ... najrozsądniejsze wydaje mi sie pakowanie do DataGrida
co podlinkowałem ze stacka ...

Jaki dokładnie błąd ci pokazuje ??

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 18:15 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Zależy o który błąd pytasz :(

ogółem ciągle pisze że nie może przerobić typu string na byte. Jeżeli tylko dam radę przerobić te tablicę string'ów na tablicą byte "będę w domu".



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 18:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Zobacz tu.
http://stackoverflow.com/questions/1607 ... in-c-sharp

rozsądne jest stosowanie System.text i metody ASCIIEncoding.Deflaut ...
C# przełyka wiele , ale tez i bywa upierdliwy...

warto korzystać z msdn ... https://msdn.microsoft.com/pl-pl/library/bb397679.aspx
masz jeszcze tu http://net-informations.com/q/faq/stringtobyte.html


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 18:53 
Offline
Nowy

Dołączył(a): 01 wrz 2016
Posty: 9
Pomógł: 5

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 19:06 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

@SunRiver, faktycznie C# jest upierdliwy lecz mimo wszystko nawet przyjemnie tworzy się w nim aplikacje okienkowe. Przynajmniej lepiej niż w czystym C :) Przeglądam to i walczę dalej.

@developer, tabBajtow.ToString(); konwertuje na stringi to co chcę mieć w hex? Do tego widzę, że tutaj do listy dopisujesz elementy przekonwertowane na byte, a jak zrobić bym to od razu do tablicy wrzucał? Problem w tym, że potrzebuję to w tablicy, nie liście :(

Teraz mam takie coś:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dostaje taki komunikat po próbie wczytania pliku:
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 19:09 
Offline
Nowy

Dołączył(a): 01 wrz 2016
Posty: 9
Pomógł: 5

Przeanalizuj kod jeszcze raz dodałem komentarz. Zakładam że tablice wolisz mieć dlatego że nie wiesz za bardzo
co to jest lista (chociaż mogę sie mylić).
Widze żę trzeba napisać pełny kod ale ok.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 19:12 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Mniej więcej wiem co to lista, lecz... Wynika to z tego, że dopiero uczę sie C# a w C nie było list (przynajmniej ja o nich nie wiem). Gdy odpisywałem nie miałem komunikatu, że jest tam komentarz, wiem już po co tamta linijka. Teraz czemu tak potrzebuję mieć to w tablicy: początkowo nie miałem zapisu do pliku .csv więc mam dalszy kod przystosowany pod tablicę. Jeżeli teraz będę miał listę to... będę musiał bardzo dużo modyfikować. Chyba że da się przepisać listę do tablicy? Tak jak pisałem na początku, bardzo mało wiem o listach, dopiero zaczynam ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 19:15 
Offline
Nowy

Dołączył(a): 01 wrz 2016
Posty: 9
Pomógł: 5

A wiesz ile będzie miał bajtów za każdym razem do odczytu z plików? Ilość jest zawsze taka sama?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 19:17 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Tak, ilość jest zawsze taka sama. Tylko w miarę "rozwoju" programu może ulegać to zmianie. Niemniej jednak liczba jest stała. Mam ok 250 okienek (na ten moment) z których odczytuję dane bajtowe i zawsze wszystkie po odczytaniu trafiają do pliku .csv. Potem chcę z tego pliku wczytać te dane do tych okienek.

------------------------ [ Dodano po: 7 minutach ]

Chciałem to teraz tak ugryźć (ostatnia linijka):
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pokazuje że nie może tego zrobić bo tab jest stringiem, a musi być char'em... Wzoruję się na tej stronie: http://net-informations.com/q/faq/stringtobyte.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 19:33 
Offline
Nowy

Dołączył(a): 01 wrz 2016
Posty: 9
Pomógł: 5

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 20:10 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Działa, wreszcie.

Bardzo dziękuję!!
Przerobiłem to bardzo delikatnie tak, bym mógł mu ręcznie wskazywać położenie pliku. Kod:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jeszcze raz bardzo dziękuje. Co prawda sporo z tego kodu nie rozumie, lecz mam punkt wyjścia i tyle to już wygrzebię w Internecie (bo już wiem co mam szukać). Od 3 dni się męczę z tym odczytem... w życiu sam bym tego nie zrobił.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2016, o 20:25 
Offline
Nowy

Dołączył(a): 01 wrz 2016
Posty: 9
Pomógł: 5

proszę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2016, o 21:05 
Offline
Użytkownik

Dołączył(a): 04 sie 2014
Posty: 207
Pomógł: 0

Nie chcę spamować nowym tematem i mam nadzieję, że ktoś tu zajrzy. Problem wygląda tak jak wyżej pisałem, lecz teraz poza bajtami w hex muszę do pliku zapisać ciągi tekstowe... Sam zapis nie jest problemem, robię to tak:

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gorzej z odczytem... Jak to przerobić by najpierw mi odczytało powiedzmy 200 bajtów (znam rozmiar, jest stały) i przerobiło na bajty a dalsze przerobiło na string i wyświetliło w oknie TextBox? Próbowałem tak robić:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO