Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Fusiox17pl

Programowanie w Delphi- Duży Lotek pomoc

Polecane posty

Witam, w ramach zaliczenia mam do napisania program zczytujący dane z jakiegoś pliku. Wymyśliłem program, który na podstawie pliku excela, w którym mam grubo ponad 5000 wierszy i 9 kolumn (Dzień, Miesiąc,Rok, Liczba1, Liczba2... Liczba6) analizuje wpisaną przez użytkownika datę ( W polu Edit) i wyświetla wyniki losowania w tym dniu. Drugą funkcją programu byłaby możliwość wpisania przez użytkownika 6 liczb a następnie po kliknięciu przycisku program porównywałby te dane i wyświetlał dni w których dane numery padły. Radziłem się nauczyciela jak można wczytać excela do programu, podpowiedział mi żebym wykorzystał format pliku csv i polecenie array. Czytałem już na tym forum wątki z tymi dwoma pojęciami ,lecz niestety nie potrafię tego ogarniać ;( Czy mógłby ktoś doradzić jak można zabrać się do tego zagadnienia? Moja wiedza z programowania kończy się na zrobieniu prostego kalkulatora czyli podstawy podstaw ;(

Może jest tutaj w gronie forumowiczów osoba, która pomoże z napisaniem programu. W ramach wdzięczności moge oddać kody do gier pod steama/origina.

Link do komentarza
Udostępnij na innych stronach

Widzę, że nikt się nie pali do pomocy, więc może pozwolę sobie podzielić zadanie na kilka mniejszych i powiesz, z którymi masz problem:

(0 przede wszystkim całość sprowadza się do odczytania pliku i przechowania gdzieś wylosowanych liczb z każdego dnia)

1 otworzenie pliku

2 odczytanie wszystkich linijek z pliku (jako Stringi)

3 wydobycie z każdej linijki 9 krótszych Stringów, reprezentujących pojedyncze pola

4 zamiana Stringów na liczby

5 zapisanie liczb w jakiejś odpowiedniej strukturze

Całkiem możliwe, że da się odczytywać liczby bezpośrednio z pliku (co pozwoli zbić kroki 2/3/4 do jednego), ale że na Pascalu i jego pochodnych znam się wcale, to wolę się trzymać bardziej ogólnej koncepcji.

No i oczywiście zakładam jedynie optymistyczny scenariusz, a więc np. że plik .csv będzie kompletny i nie będzie zawierał śmieci.

Link do komentarza
Udostępnij na innych stronach

Program będzie wykonany w Delphi, mam przygotowany plik csv i za cholercie nie wiem jak zrobić, żeby program wczytał go np do string grida lub innej tablicy (jesli to możliwe) a następnie przeszukiwał tego string grida według np daty lub konkretnej kombinacji.

Link do komentarza
Udostępnij na innych stronach

Właściwie poszczególne kroki do momentu wrzucenia danych do string grid'a (mam nadzieję, że słusznie zakładam, że to jakaś kontrolka?) już podałem, więc sprecyzuj, z którymi masz problem.

I muszę przyznać, że średnio widzę umieszczanie takich ilości danych w gridzie - i tak użytkownikowi ciężko będzie cokolwiek tam odnaleźć, no i nie wiem, po co mu tyle informacji.

Niezależnie od tego, czy zdecydujesz się użyć grida, czy nie, przyda się jakaś klasa przechowująca datę, chyba najlepszy będzie TDateTime (zerknij tu i tu).

Jeżeli będziesz korzystał z grida, to zapewne pozostanie Ci żmudne przeglądanie wszystkich wierszy w poszukiwaniu odpowiedniej daty (większość gridów udostępnia pole/metodę Cells, która umożliwia dostęp do konkretnej komórki), jeżeli go sobie odpuścisz, to możesz spróbować użyć takiej klasy (kluczem byłaby data, wartością tablica/lista liczb), która nieco uprości szukanie liczb z podaną datą (właściwie obecność grida nie wyklucza jej użycia).

Link do komentarza
Udostępnij na innych stronach

Plik csv to najzwyklejszy plik tekstowy (możesz sobie podejrzeć jego zawartość dowolnym edytorem tekstu, nawet systemowym notatnikiem), a ich obsługa niewiele się różni od korzystania z konsoli - link.

Całkiem możliwe, że da się odczytywać liczby bezpośrednio z pliku

Nie jestem pewien, czy nie da się funkcją Readln odczytać bezpośrednio liczb (czyli czy funkcja sama ich nie wyszuka między separatorami pól).

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...