podzielone pliki nieprzenośne

Index
vader00.serwis
 

Temat: jak zapisać strukturę do pliku
Użytkownik acdwas napisał:


| O, bogowie.
| Nie rób tak. To bardzo nieprzenośne i wyjątkowo brzydkie/podatne na błędy
| pamięci. Właściwe słowo kluczowe to "serializacja"

chodzi ci o fprintf(); fscanf();?
jesli tak to zgadzam sie ze jest to niebezpieczne ale jesli struktrua jest
np:


fprintf( ) itd.. sa jak najbardziej przenośne, bo pochodzą ze
standardowej biblioteki I/O. Koledze chodzilo prawdopodobnie o to, że
powyższy kod generuje nieprzenośne pliki. Chodzi głównie o zapis "sizeof
dane", lub "sizeof(struct osoba)" i o "zrzucanie" do pliku "binarnego
obrazu" struktury. Wartość sizeof(X) może się zmieniać z kompilatora na
kompilator i z platformy na platformę. Tj. Kompilator A może przypisać
jej wartość "a", natomiart kompilator B wartość "b". Zależy to np. od
rozmiarów przypisywanych poszczególnym polom struktury (np. long ma z
reguły 32 bity, ale przy kompilacji dla 64-bitowego SPARC'a może mieć 64
bity). Druga rzecz to to, że różne kompilatory wyrównują sobie struktury
np. do wielokrotności X bajtów (X może być np. 4,8, 16 w zależności od
kompilatora i od jego ustawień). A konkluzja jest taka, że program
napisany/uruchomiony w środowisku A nie będzie rozumiał danych
wygenerowanych przez ten sam program skompilowany/uruchomiony w
środowisku B.


Źródło: topranking.pl/1275/jak,zapisac,strukture,do,pliku.php


Temat: Czytanie z pliku + BCB


Oczywiście, że łatwiej, ale (pomijając wyciek pamięci) nieprzenośnie.
Gdy pewnego dnia OP zapragnie zmienić kompilator i bibliotekę GUI z VCL
na np. wxWidgets, ten kod trzeba będzie napisać od nowa.


No tak, ale twoje pierwsze rozwiązanie też nie jest przenośne skoro w
pętli ładujesz do stringgrida. Treba by osobno tworzyć vector z napisami
z pliku a osobno ładować dane do StringGrida.

Co do wycieku to oczywiście można go uniknąć np tak:

   TStringList *lista=new TStringList();
   lista-LoadFromFile("c:\file.txt");
   StringGrid1-RowCount= lista-Count;
// tu szybkie przepisanie
   StringGrid1-Cols[0]-Text=lista-Text;
   delete lista;

Za szybko napisałem bez myślenia.

Pozdrawiam


Źródło: topranking.pl/1280/czytanie,z,pliku,bcb.php


Temat: Czytanie z pliku + BCB


Jacek Czapla wrote:

| Oczywiście, że łatwiej, ale (pomijając wyciek pamięci) nieprzenośnie.
| Gdy pewnego dnia OP zapragnie zmienić kompilator i bibliotekę GUI z
| VCL na np. wxWidgets, ten kod trzeba będzie napisać od nowa.

No tak, ale twoje pierwsze rozwiązanie też nie jest przenośne skoro w
pętli ładujesz do stringgrida.


Na to nie ma rady -- skoro używa się jakąś kontrolkę, to kod związany z
jej obsługą siłą rzeczy nie może być przenośny.


Treba by osobno tworzyć vector z napisami
z pliku a osobno ładować dane do StringGrida.


No i tak wÅ‚aÅ›nie byÅ‚o w przykÅ‚adzie, który podaÅ‚em.  Czytanie z pliku i
umieszczenie tekstu w kontenerze było napisane uniwersalnie, a przy
ewentualnej zmianie kompilatora czy biblioteki czy w razie użycia innej
kontrolki, trzeba jedynie zmienić tę część bezpośrednio z tym związaną.

Żeby sprawa była jasna -- te uwagi to nie przygana dla sposobu, który
podaÅ‚eÅ›.  Sam tak robiÄ™, gdy potrzebujÄ™ program na szybko i wiem, że
potem do niczego innego mi siÄ™ on nie przyda.  Moim celem byÅ‚o tylko
zasygnalizowanie potencjalnego problemu.


Źródło: topranking.pl/1280/czytanie,z,pliku,bcb.php


Temat: Procedury a pliki
"Marcin Szczepkowski" napisł:


Zastanawia mnie jak odczytac/zapisac procedure do pliku. Chce wczytac te
procedure z pliku ktorego nazwe podam po uruchomnieniu programu (externale
odpadaja...).


"Legalnie" ani Pascal ani C(++) w sensie definicji języka programowania
nie nadajÄ… siÄ™ do takich rzeczy.
Można to zrobić takim czy innym "mykiem", ale będzie to nieprzenośne
na inne systemy.

Ogólnie widzę kilka wyjść:

- Opuścić DOSa i posłużyć się tzw. bibliotekami ładowanymi dynamicznie,
czyli np. DLL pod Win32. Do tego dokładnie one służą. To też nie jest
przenośne, ale przynajmniej dostajesz wsparcie od systemu operacyjnego.

- Zdefiniować sobie własny język programowania, zaimplementować
w Pacalu parser i runtime do niego, i do tych plików wstawiać
treści w tym języku ... ;)

- He, he: w locie generować i kompilować źródła Pascalowe i później
wywoływać tak powstałe programy i kazać im np. zwracać wyniki w plikach.
Nieco dziwne, bo program do działania będzie wymagał kompilatora ... ;)

Nie napisałeś jednego: czy te procedury mają być generowane w runtimie,
czy przygotowywane przed uruchomieniem.

J.K.


Źródło: topranking.pl/1301/procedury,a,pliki.php


Temat: Po przesiadca na PHP5 problem z pobieraniem plików
Steven Jurczyk napisał(a):

Gwarantuje ci ze sciezka do pliku nie zostanie wyslana do browsera
(lokalne Location wykonywane jest bezposrednio przez serwer WWW,
ktory zwraca po prostu wskazany plik do Klienta)..

Rozwiazanie dziala i nie obciaza serwera...

"nie zostanie wysłana do browsera" wygląda tak:

HTTP/1.1 302 Found
Date: Wed, 25 Oct 2006 08:40:40 GMT
Server: Apache
Location: /ukryty_katalog/ukryty_plik
Cache-Control: max-age=86400
Expires: Thu, 26 Oct 2006 08:40:40 GMT
Vary: Accept-Encoding
Content-Length: 0
Content-Type: application/x-unknown

Pytanie dotyczylo home.pl - i tam to prawidlowo dziala..

--
pozdrawiam
Stefan Jurczyk

dajcie już spokój z tym śmiesznym PHP, tu nie da się napisać nic
sensownie działającego z kilku powodów m.in. dlatego, że działanie
całkowicie zależy tylko i wyłącznie od humorów admina i to co się pisze
jest albo cholernie nieprzenośne, albo trzeba się za bardzo narobić żeby
przenośne było.


Źródło: topranking.pl/1305/po,przesiadca,na,php5,problem,z,pobieraniem.php


Temat: Zastępca dla Accessa
Osoba podpisana jako Jarosław Staniek <k@wytnij.neostrada.plw artykule
<news:44EC7E80.4000800@wytnij.neostrada.plpisze:


Tauron said the following, On 2006-08-22 21:27:

| Poza tym, czy "sterowniki" do ODBC i Jet sÄ… darmowe i czy sÄ… w
| Linuxie ?
MS Jet to silnik bazy danych MS Access dostępny jedynie na Windowsa, jak
wszystko tego producenta.

Nieskromnie powiem, że wieloplatformowe narzędzie najlepiej czytające
pliki MDB/MDE to Kexi.


Zapomniałeś napisać, że narzędzie to w wersji dla Windows nie bardzo chce
być darmowe. Cena 99 euro to nie tak znowu mało za narzędzie, które z
plikami Accessa nie do końca sobie radzi.


Warto w takich przypadkach dwa razy się zastanowić, zanim się użyje
nieprzenośnego narzędzia do projektu, który ma być przenośny.


Dotyczy to również Kexi.
Nieskromnie powiem, że jedyne naprawdę przenośne rozwiązanie to stare dobre
dbfy ;-P


Źródło: topranking.pl/1324/zastepca,dla,accessa.php


Temat: Unix-y


Marcin Wieczorek <wiec@polbox.comwrote:
gstan@inka.zagiel.pl (Grzegorz Staniak) napisał(a) w
<slrn.pl.9fv13c.sm.gstan@inka.zagiel.pl:
| Ilość asemblera w kodzie jądra systemu jest odwrotnie proporcjonalna do
| jego przenośności. Ilość asemblera w kodzie NT jest nieznana. Ergo: nie
| masz żadnych podstaw do twierdzenia, że NT jest równie przenośne jak
| każdy inny system.
Å»aden  system  nie  jest przenoÅ›ny. Zawsze trzeba jakiÅ› kawaÅ‚ek przepisać pod
konkretnÄ…  architekturÄ™.  W  tym sensie NT jest tak samo przenoÅ›ne jak reszta
systemów.


A nie zależy to (t.j. _stopień przenośności_) od ilości kodu napisanego w
assemblerze i pod konkretnÄ… architekturÄ™? (W /usr/include/asm mam 84
pliki, w stosunku do 445 w /usr/include/linux).

Jeśli trzeba zamienić 10 plików i zdefiniować odpowiednią stałą
symboliczną a następnie przekompilować, to program jest IMO bardziej
przenośny od takiego, w którym trzeba zamienić 50 plików oraz ciężko
pozmieniać sam program, jako że pisany był z użyciem konstrukcji
nieprzenośnych. Wcale nie twierdzę, że NT jest mniej (ani że jest
bardziej) przenośny od Linuksa. Po prostu się na tym nie znam. Ale IMHO
nie można twierdzić, że każdy _system_ jest tak samo przenośny, nawet
jeśli istnieje kilka jego wersji na różne architektury. Liczy się łatwość
tworzenia wersji pod inne architektury.


Źródło: topranking.pl/1330/unix,y.php


Temat: Unix-y
W śro, 16 maj 2001 o 16:35 GMT, Jakub Narębski napisał(a):


Marcin Wieczorek <wiec@polbox.comwrote:
[...]
| System  przenoÅ›ny  to  taki gdzie wszystko pójdzie bez Å»ADNYCH zmian. Inaczej
| dojdziemy  do  wniosku,  Å¼e wszystko jst przenoÅ›ne w okÅ„cu 99% kodu też można
| przepisać.

Khem, jeśli w kodzie (dla przykładu w C) korzysta się z konstrukcji
zdefiniowanych w standardzie jako nieprzenośnych (zależnych od kompilatora
lub nawet niezdefiniowanych), to trudno program nazwać przenośnym. Nie
mówiąc już o korzystaniu ze specyficznych cech sprzętu.


Trzeba jeszcze uważać jak się czyta pliki binarne.
Zwykłe read(fd,&i,sizeof(int)) nie jest przenośne pomiędzy little-endian
a big-endian.


Źródło: topranking.pl/1330/unix,y.php


Temat: Too many unprocessed floats! Co z tym zrobic
Witam
myślałem, że w związku z brakiem instalatora dla Win zainstaluję sobie
TeXLive 2004 spod Linuxa na partycji FAT 32, zaznaczajÄ…c za jednym
zamachem binaria Win i Lin. Ale oto pojawił się problem: zarówno proces
instalacyjny, jak i --- co gorsza! --- updmap życzą sobie wykonać
symboliczne linki, co oczywiście jest niewspierane przez FAT 32. O ile
jeszcze da się rozwiązać problem z programami, o tyle linki do map w
texmf-var są zupełnie nie do przełknięcia

[pomijam polinkowany na okrętkę bin/i386-linux]

[adam@my TeX2004]$ ls -lR texmf |grep lrw
lrwxrwxrwx  1 root tex    10 sty 16 15:44 kpsepath.1 -kpsetool.1
lrwxrwxrwx  1 root tex    10 sty 16 15:44 kpsexpand.1 -kpsetool.1
lrwxrwxrwx  1 root tex    9 sty 16 15:44 mktexfmt.8 -fmtutil.8

[adam@my TeX2004]$ ls -lR texmf-var |grep lrw
lrwxrwxrwx  1 adam adam  17 sty 22 00:26 dvipdfm.map -dvipdfm_ndl14.map
lrwxrwxrwx  1 adam adam  14 sty 22 00:26 psfonts.map -psfonts_t1.map
lrwxrwxrwx  1 adam adam  15 sty 22 00:26 pdftex.map -pdftex_dl14.map

Pliki obsługiwane przez TeX są z natury swojej przenośne. Dlaczego psuć
przenośność danych ich nieprzenośną lokalizacją? Czy nie lepiej byłoby
kopiować pliki, zamiast je linkować, tak, by po wykonaniu updmap pod
linuxem można było skompilować projekt pod Windowsem?

Jak czasu starczy, zajmę się hakowaniem updmap, by usunąć z niego ln -s;
Nie powinno być trudne. Jednakże chciałbym zwrócić uwagę teamu TL na
problem, który jest niby nieznaczący (ilu jest dwusystemowców na
liście?), ale jednak uciążliwy.

Pozdrawiam z okopów nielinuksocentrycznych
Adam Kucharczyk


Źródło: topranking.pl/1261/too,many,unprocessed,floats,co,z,tym,zrobic.php


Temat: Problem z cout
Dnia 16 May 2000 16:28:23 GMT, Marcin 'Qrczak' Kowalczyk skrobie:

zamknąć nie problem, tylko nie można na nowo otworzyć :-)

Jak to nie ? Oczywiscie, ze nie mozesz otworzyc (ani uzywac wogle po
zamknieciu) cout, ale mozna otworzyc sobie plik i podmienic deskryptory.
Podmienić deskryptory? Ciekawe jak. Jeśli w ogóle, to nieprzenośnie,


Jaki ty jestes bezmyslny... A co Twoim zdaniem robi dup2 ?
Nieprzenosnie ? Coz, w sumie problem - z tego, co mowisz i tak istnieje tez
tylko na DOSie, bo nie na UNIXie, a na DOS-ie nie ma dup2 (przynajmniej nic o
tym nie wiem).

bo w standardach C i C++ w ogóle nie ma czegoś takiego jak deskryptor pliku.


Tak sadzisz ? To co twoim zdaniem zwraca funkcja 'int fileno( FILE* )' ?

Do rozwiązania pierwotnego problemu (wysłać binarny plik na stdout),
oprócz użycia gołego write (nieprzenośnie rzecz jasna, AFAIR
pod DOSowym Borlandem to się nazywa _write), wystarczyłby C++owy
odpowiednik fdopen (działający na iostream a nie FILE *).


Chodzi Ci zapewne o fstreambase::attach(). Problem w tym wlasnie, ze jest to
metoda fstreambase, wiec niedostepna dla cout. Tylko ciekaw jestem, w jaki
cudowny sposob chcialbys jej uzyc dla cout. Musialbys najpierw zamknac
deskryptor 1, ale sam stwierdziles, ze to nie bedzie przenosne...

Jak mówiłem, w standardzie nie da się wysłać binarnych danych na
stdout / cout, chociaż przy otwieraniu innego pliku po nazwie istnieje
pojęcie trybu binarnego. Tryb można określić tylko przy otwarciu pliku,
a stdout / cout dostajemy już otwarty.


Ale pod UNIXem nadajacy sie do wysylania danych binarnych - jak sam
zauwazyles.

Pozdrawiam,


Źródło: topranking.pl/1275/problem,z,cout.php


Temat: Procedury a pliki

Użytkownik Jarek Kucypera <j@insert.com.plw wiadomości do grup
dyskusyjnych napisał:92i137$6d@mail.insert.com.pl...


"Legalnie" ani Pascal ani C(++) w sensie definicji języka programowania
nie nadajÄ… siÄ™ do takich rzeczy.
Można to zrobić takim czy innym "mykiem", ale będzie to nieprzenośne
na inne systemy.

Ogólnie widzę kilka wyjść:

- Opuścić DOSa i posłużyć się tzw. bibliotekami ładowanymi dynamicznie,
czyli np. DLL pod Win32. Do tego dokładnie one służą. To też nie jest
przenośne, ale przynajmniej dostajesz wsparcie od systemu operacyjnego.

- Zdefiniować sobie własny język programowania, zaimplementować
w Pacalu parser i runtime do niego, i do tych plików wstawiać
treści w tym języku ... ;)

- He, he: w locie generować i kompilować źródła Pascalowe i później
wywoływać tak powstałe programy i kazać im np. zwracać wyniki w plikach.
Nieco dziwne, bo program do działania będzie wymagał kompilatora ... ;)

Nie napisałeś jednego: czy te procedury mają być generowane w runtimie,
czy przygotowywane przed uruchomieniem.

J.K.


Procedury maja byc przygotowane wczesniej. Nie wazne jest dla mnie to czy
beda one skompilowane czy nie. Liczy sie fakt zebym mogl je poznej odczytac
z zewnatrz, nie definiujac z gory pliku z ktorego bede to robil. Zapomnialem
(amnezja... starosc nie radosc - 17:)) wspomniec o tym ze nawet lepiej by
bylo gdyby w plikach miec cale obiekty niz pojedyncze procedury.

Przylsza mi na mysl inna sprawa w zwiazku z tym co powiedziales.
Jak wczytac program do pamieci nie odpalajac go, od razu tylko wtedy kiedy
zajdzie taka koniecznosc.

                        Marcin Szczepkowski

PS. Co to jest parser?

Poczta do : marcin_s@poczta.onet.pl


Źródło: topranking.pl/1301/procedury,a,pliki.php




 
 
Odnośniki
 
 
   
Copyright © 2006 Sitename.com. Designed by Web Page Templates