ďťż

Ładny brzuch

Potrzebuje napisać coś takiego!
Z label1 zapisać do pliku *.dll i czy da się dodać plik.txt do plik.dll? a jeśli tak to w jaki sposób. Szukałem wszędzie i nic nie znalazłem (chyba) na ten temat.

Proszę o pomoc i o konkretny przykład!!!

Asdef



A nie możesz potraktować pliku dll jako txt ze zmienionym rozszerzeniem?

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

Rozszerzenie tylko sugeruje programiście czy to uzytkownikowi z jakiego rodzaju plikiem przyjdzie mu pracować a konkretnie jakiego typu pliku powinien się spodziewać. "Powinien" nie znaczy że tak właśnie bedzie.
Rozszerzenie *.dll zarezerwowane jest dla bibliotek dołączanych dynamicznie, nie oznacza to jednak że Ty tworząc plik o takim rozszerzeniu oddajesz do użytku właśnie taką bibliotekę, do każdego pliku (nieważne jakie ma rozszerzenie) można zapisać wszystko to co się chce. Po to jednak są te rozszerzenia żeby nie panował ogólny bałagan. Jeśli coś jest *.dll to powinien tam byc DLL, jesli ma być tekst to raczej *.txt czy *.def czy *.ini czy nawet *.bin lub *.dat. To co ty chcesz zrobić dll-em na pewno nie bedzie - zwykle jest tak że się chce pokazać więcej niz faktycznie się umie, nieładny i brzydki nawyk ;) . Ja wiem że dll załączony do aplikacji wygląda ładniej niż jakiś tam txt ale nie o to chodzi.
A co do zapisu tekstu lub binarki do pliku to w przypadku c++ (zgaduje że właśnie chodzi o ten język) proponuję zapoznać się ze specyfikacją takich klas fstream, ifstream oraz ofstream należących do biblioteki we/wy.

KoDo
GG:3857769

cytat:KoDo napisał:

Rozszerzenie tylko sugeruje programiście czy to uzytkownikowi z jakiego rodzaju plikiem przyjdzie mu pracować a konkretnie jakiego typu pliku powinien się spodziewać. "Powinien" nie znaczy że tak właśnie bedzie.
Rozszerzenie *.dll zarezerwowane jest dla bibliotek dołączanych dynamicznie, nie oznacza to jednak że Ty tworząc plik o takim rozszerzeniu oddajesz do użytku właśnie taką bibliotekę, do każdego pliku (nieważne jakie ma rozszerzenie) można zapisać wszystko to co się chce. Po to jednak są te rozszerzenia żeby nie panował ogólny bałagan. Jeśli coś jest *.dll to powinien tam byc DLL, jesli ma być tekst to raczej *.txt czy *.def czy *.ini czy nawet *.bin lub *.dat. To co ty chcesz zrobić dll-em na pewno nie bedzie - zwykle jest tak że się chce pokazać więcej niz faktycznie się umie, nieładny i brzydki nawyk ;) . Ja wiem że dll załączony do aplikacji wygląda ładniej niż jakiś tam txt ale nie o to chodzi.
A co do zapisu tekstu lub binarki do pliku to w przypadku c++ (zgaduje że właśnie chodzi o ten język) proponuję zapoznać się ze specyfikacją takich klas fstream, ifstream oraz ofstream należących do biblioteki we/wy.

KoDo
GG:3857769

Nie, chodzi mi o Delphi zapomniałem dodać
To nie chodzi o ładność czy o umiejętność tylko mi jest to potrzebne (chyba)
cytat:NeVeS napisał:
A nie możesz potraktować pliku dll jako txt ze zmienionym rozszerzeniem?

To znaczy wziołem
Np.: label1 - zapisuje nazwę pliku (plik.txt) do folderu (Baza) i za każdym razem gdy zmienie tekt w label1 twoży mi plik i robi się ich za dużo czy można te pliki gdzieś schować do innego pliku nie chodzi mi też żeby były ukryte pliki *.txt

:help:

Asdef



rozwiązanie jest bardzo proste:
w programie odczytujesz zawartośc wszystkich plików txt, poczym zapisujesz ich zawartość do innego pliku txt (np. "zebrane_przeze_mnie_pliki_txt.txt")
co zrobić żeby potem podzielić plik "zebrane_przeze_mnie_pliki_txt.txt" na mniejsze ???
... po każdym zapiosanym doń pliku wstawiasz coś takiego (taki podgłówek (bo jest pod tekstem a nie na początku--> wtedy to jest nagłówek))

!@#$%^&*()
nazwa_pliu.txt
!@#$%^&*()

i potem w progsie sprawdzasz czy linijka nie jest równa !@#$%^&*()

jak masz jakieś problemy to pisz :0

ps. zamiast !@#$%^&*() może być ########### albo ^^^^^^^^^^^ albo co tam chcesz :D

milewski28@wp.pl
GG-2720584
Pozdrowka

cytat:aim napisał:

rozwiązanie jest bardzo proste:
w programie odczytujesz zawartośc wszystkich plików txt, poczym zapisujesz ich zawartość do innego pliku txt (np. "zebrane_przeze_mnie_pliki_txt.txt")
co zrobić żeby potem podzielić plik "zebrane_przeze_mnie_pliki_txt.txt" na mniejsze ???
... po każdym zapiosanym doń pliku wstawiasz coś takiego (taki podgłówek (bo jest pod tekstem a nie na początku--> wtedy to jest nagłówek))

!@#$%^&*()
nazwa_pliu.txt
!@#$%^&*()

i potem w progsie sprawdzasz czy linijka nie jest równa !@#$%^&*()

jak masz jakieś problemy to pisz :0

ps. zamiast !@#$%^&*() może być ########### albo ^^^^^^^^^^^ albo co tam chcesz :D

milewski28@wp.pl
GG-2720584
Pozdrowka

gdzie mam te pliki odczytać w zmienną?

Asdef

jesteście tam jeszce?

Asdef

cytat:NeVeS napisał:

A nie możesz potraktować pliku dll jako txt ze zmienionym rozszerzeniem?

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

nie bo to by był plik txt

Asdef

cytat:Asdef napisał:

cytat:NeVeS napisał:

A nie możesz potraktować pliku dll jako txt ze zmienionym rozszerzeniem?

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

nie bo to by był plik txt

Asdef

Nie wiem co napisać ................ Nie wiem bo nie wiem w czym tkwi problem ...... Mógłbyś dokładniej napisać co chcesz osiągnąć? W jakim języku? Może rozwiązaniem twojego problemu będą pliki typowane?

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

1.W sumie to na upartego możnaby wykorzystać strumienie i po prostu dopisać ten twój plik.txt na koniec DLL'ka.
Coś w stylu:

procedure Dopisz(co:string);
var Stream:TFileStream;
begin
Stream:=TFileStream.Create('Twoj_plik_dll.dll',fmOpenWrite);
Stream.Seek(Stream.Size,soFromBeginning);
Stream.Write(co,sizeof(co));
Stream.Free;
end;

...Później trzebaby jeszcze to odczytać...
Nie możesz dodać tego tekstu do pliku zasobów(*.res ,pliki *.res można bez problemu dołączyć do biblioteki DLL)?
Aha tak naprawde to można dołączyć tekst do biblioteki DLL , ale
nie podczas działania programu.

cytat:NeVeS napisał:

Nie wiem co napisać ................ Nie wiem bo nie wiem w czym tkwi problem ...... Mógłbyś dokładniej napisać co chcesz osiągnąć? W jakim języku? Może rozwiązaniem twojego problemu będą pliki typowane?

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

if edit1.Text = '' then
Form2.ShowModal
else
if Edit3.text = '' Then
Form3.ShowModal
else
if Edit4.text = '' Then
Form4.ShowModal
else
if Edit5.text = '' then
Form5.ShowModal
else
if Edit6.text = '' then
Form6.ShowModal;

if Edit1.text > '' then
if Edit3.text > '' then
if Edit4.text > '' then
if Edit5.text > '' then
if Edit6.text > '' then

Begin
repeat;

AssignFile(F1,L);
rewrite(f1);
CloseFile(F1); // zamknij plik

if Edit1.text > '' then
if Edit3.text > '' then
if Edit4.text > '' then
if Edit5.text > '' then
if Edit6.text > '' then

A := Edit1.Text; // Nazwisko
B := Edit3.Text; // Imję
C := Edit4.Text; // Adres
D := Edit5.Text; // Tel dom
E := Edit6.Text; // Tel kom

AssignFile(F1, L); // Otwieranie pliku (F1)
Append(F1); // Dopisywanie REKORÓW do pliku (Plik1.txt)
if Edit1.text > '' then
Writeln(F1,',',A ,',!',B,' Ul.',C, '*' ,D,'-',E,'+'); // Rekord do zpisania tzn. z(A) do Pliku
CloseFile(F1); // zamknij plik
Edit1.clear;
Edit3.clear;
edit4.Clear;
edit5.Clear;
edit6.Clear;
A:= Edit1.text;
B:= Edit3.text;
C:= Edit4.text;
D:= Edit5.text;
E:= Edit6.text;
Until A+B+C+D+E = '';
end;

gdy zmienię nazwisko w label1 to tworzy mi o takiej nazwie (plik)
i ich jest coraz więcej wiem że to można zapisywać w jednym pliku później wyszukiwać
Linii ale mnie chodzi o schowanie tych plików do pliku *.dll
Np. program wyszukuje plików o danym rozszerzeniu i następnie wrzuca je do pliku *.dll tak jak do katalogu czy się tak da?

a zapomniałem dodac jezyk w którym się ucze to Delphi3 Client/Server Suite

Asdef

Dalej nie wiem o co chodzi :) dodam swoje komentarze do tego:

Do tej pory kod jest dobry choć nie najlepiej napisany
[...]
Jeśli pola nie są puste to robi to
Begin
repeat; << wdług mnie tu nie powinno być średnika
AssignFile(F1,L); <<
rewrite(f1); << stwórz plik
CloseFile(F1); << zamknij plik A ja nato po co tworzysz tu ten plik i go po tem zamykasz dla mnie nie logiczne

if Edit1.text > '' then
if Edit3.text > '' then <<to poco to ja też nie wiem przecież t ojuz sprawdzałeś wcześniej
if Edit4.text > '' then
if Edit5.text > '' then
if Edit6.text > '' then

A := Edit1.Text; // Nazwisko
B := Edit3.Text; // Imję
C := Edit4.Text; // Adres NAreszczeie coś potrzebnego
D := Edit5.Text; // Tel dom
E := Edit6.Text; // Tel kom

AssignFile(F1, L); // Otwieranie pliku (F1)
Append(F1); // Dopisywanie REKORÓW do pliku (Plik1.txt)<< jaki znowu dopisywanie??? to otwiera plik i ustawia na koniec
if Edit1.text > '' then // po co znowu to sprawdzasz?????
Writeln(F1,',',A ,',!',B,' Ul.',C, '*' ,D,'-',E,'+'); // Rekord do zpisania tzn. z(A) do Pliku
CloseFile(F1); // zamknij plik
Edit1.clear;
Edit3.clear;
edit4.Clear;
edit5.Clear;
edit6.Clear; <<<<<<< PO CO TOOOOOOOOO
A:= Edit1.text;
B:= Edit3.text;
C:= Edit4.text;
D:= Edit5.text; <<<<< TTO TAK SAMOOOOO
E:= Edit6.text;
Until A+B+C+D+E = ''; <<<<< po co tO jest W Pętlliiiiii????????
end;

:x:x:x:oops::x:oops::x:oops::x:oops::!:oops::x:!:oops::x:!:oops:[:yx]:x:bicz::cegly::kill3::kill2::lame::lol2::mlotek2::mlotek3:

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

cytat:NeVeS napisał:
CloseFile(F1); // zamknij plik
Edit1.clear;
Edit3.clear;
edit4.Clear;
edit5.Clear;
edit6.Clear; <<<<<<< PO CO TOOOOOOOOO
A:= Edit1.text;
B:= Edit3.text;
C:= Edit4.text;
D:= Edit5.text; <<<<< TTO TAK SAMOOOOO
E:= Edit6.text;
Until A+B+C+D+E = ''; <<<<< po co tO jest W Pętlliiiiii????????
end;

Edit1.clear;
Edit3.clear;
edit4.Clear;
edit5.Clear;
edit6.Clear; <<<<<<< PO CO TOOOOOOOOO<< to jest jak zapisze to wykasuje zawartość edit bo potem jest to nie potrzebne
A:= Edit1.text;
B:= Edit3.text;
C:= Edit4.text;
D:= Edit5.text; <<<<< TTO TAK SAMOOOOO <<<
E:= Edit6.text;
Until A+B+C+D+E = ''; <<<<< po co tO jest W Pętlliiiiii?<< w pętli jest dlatego żeby prog nie przepuścił cie dalej jak nie wpiszesz wszystkich pozycji
end;

NeVeS nie denerwuj się jestem początkujący zabawę z programowaniem za czołem dopiero od 3 miesięcy i nie od razu Kraków zbudowali :oops:

Ps. czy ktoś wie o co mi chodzi?

Asdef

cytat:Asdef napisał:
Until A+B+C+D+E = ''; <<<<< po co tO jest W Pętlliiiiii?<< w pętli jest dlatego żeby prog nie przepuścił cie dalej jak nie wpiszesz wszystkich pozycji
end;

No ale tuż przed until ustawiasz "na sztywno" zawartość A, B, C, D i E - więc z góry wiesz jaką będą miały wartość.

cytat:
Ps. czy ktoś wie o co mi chodzi?

Staram się zrozumieć - ale nie jestem pewien ;)

Kontakt - GG:5365367 / ICQ:245363570
(tylko w sprawach prywatnych - inne pytania proszę zadawać na Forum)

Napisz dokładnie o co ci chodzi np. Mam 5 editów i chcę zapisać ich ...

---------------------------------
..::NeVeS::..
---------------------------------
Życie to śmierć, śmierć to życie.

mam 5 editów zapisuje je do pliku.txt w folderze (Baza) następnie np. po wciśnięciu przycisku (Button) ma wyszukać wszystkie pliki.txt i wrzucić je do jakiegoś pliku
nie foldera i chciałbym ten plik.txt otworzyć np. z pliku.dll tak jak z foldera

Podsumowanie
Najważniejsze jest to żeby tylko. Wszystkie pliki.txt były odnalezione w katalogu (Baza) następnie włożone do pliku *.dll a na Końcu te pliki.txt żebym mógł je mógł odczytywać tak jak z katalogu

Chodzi mi tylko czy się tak da jak tak to dajcie mi przykład;)

Asdef

pewnie ze się da. Musisz tylko napisać odpowiednia funkcję, która bedzie odczytywała z pliku dll. Mozesz to zrobic na przykład za pomocą drzewa. Zapisujesz po prostu w pliku dll drzewo. Oczywiście na liściach drzewa masz zawartość plików txt. Potem tylko wczytujesz dll do pamięci kompa i korzystasz tak jak z folderu!

Marcin

Aha jeszcze jedno! Nie musisz wcale zapisywać do dll. MOze to byc równie dobrze txt, avi, mpeg, albo zzz!

Marcin

cytat:sovteq napisał:

pewnie ze się da. Musisz tylko napisać odpowiednia funkcję, która bedzie odczytywała z pliku dll. Mozesz to zrobic na przykład za pomocą drzewa. Zapisujesz po prostu w pliku dll drzewo. Oczywiście na liściach drzewa masz zawartość plików txt. Potem tylko wczytujesz dll do pamięci kompa i korzystasz tak jak z folderu!

Marcin

jak niby mam to zrobić i napisz mi tą funkcję (bo Chyba mi oto chodzi)
pozostańmy przy pliku.dll

Asdef

:roll:

Hmm.. na moje oko chodzi Ci o zapis wielu plików w jednym, a-la archiwa. Możesz :lame: skorzystać z gotowych komponentów :lame: ( :) ), lub napisać kilka funkcji samemu. Struktura takiego prostego zbioru (tak nazywam pliki zawierające inne) może być następująca:
->Identyfikator - do sprawdzania, czy jest to poprawny plik
->Ilość zawartych plików
->Nazwy plików - 64 bajty, tyle wpisów, ile plików zawartych w zbiorze
->Offsety (ilość bajtów) od początku pliku do początku danych; także tyle wpisów, ile plików w zbiorze.

Odczytywanie pliku zawartego w zbiorze sprowadza się do:
->Sprawdzenia poprawności nagłówka
->Wczytania tablicy nazw i offsetów
->Przeszukania tablicy nazw za poszukiwanym plikiem
->Po odnalezieniu odpowiedniego wpisu w tablicy nazw, pobiera się wpis o tym samym numerze z tablicy offsetów i wczytuje dane.

Zapisywanie jest jeszcze proste:
->Zwiększenie ilości plików o 1
->Dopisanie nowej nazwy do tablicy nazw
->Dopisanie nowego offsetu do tablicy - ostatni offset + rozmiar danych
->Dopisanie danych na końcu

Wszelkie modyfikacje wymagają, niestety, przepisania pliku od początku - tj. wczytania do pamięci, zmodyfkowania i zapisania.

To tylko prosty przykładzik, jeśli opanowałeś funkcje wejścia-wyjścia, to spokojnie coś takiego napiszesz; ja mogę rzucać tylko teorią, bo piszę w C++ i Delphi nie znam.

Pozdrawiam,
TeMPOraL

PS. - I powiedz mi, czemu tak przywiązałeś się do tego rozszerzenia DLL. Przecież nie ma znaczeniam, jakie plik ma rozszerzenie; jeśli zmienisz rozszerzenie pliku z .mp3 na .txt, i każesz go (.txt) otworzyć w WinAmpie, to nie będzie żadnej różnicy pomiędzy takim otwarciem, a otwarciem pliku .mp3 .

//================================================
KĄESACP: Komputer Ąwiat - Expert Society Against Crap Posting
To join: Put these lines in your signature and don't post crap!
"E = mc... dolen taken my notepad!" - Terran Science Vessel (StarCraft)
GG: 1488052 | temporal@poczta.fm | [url]http://www.temporal-software.prv.pl

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •