Skocz do zawartości

[Lazarus]zapis parametrów do pliku


sazian

Polecane posty

Witam,

wiem że temat jest trochę dziwny ale nie wiem jak to opisać :D

 

dorzeczy

chcę zapisać taki rekord do pliku

 TSQLDane=record
       server:string;
       login:string;
       password:string;
       dbName:string;
       port:integer;
 end; 
(Ż7ł'^bpr\0FćUfĆSŚfĆRbE5FćSFćSE5FćS(Ż7Ł)zZaY[J[W[K        N[K]    NĘNU]J[W[JN6Łyy+zJ+v6\"Ś'ŚŁzXjŹui'
 dane.server:='localhost';
 dane.login:='root';
 dane.password:='haslo';
 dane.dbName:='baza';
 dane.port:=0;

Write(dane_file,dane);
 CloseFile(dane_file); 
0ł<ŹśJ&jWĘhn'jjwŁjJ)jśŚzJ'b')(ui'
dane.server:=GetOptionValue('s','server');
 dane.login:=GetOptionValue('l','login');
 dane.password:=GetOptionValue('p','password');
 dane.dbName:=GetOptionValue('n','name');
 dane.port:=StrToInt(GetOptionValue('port'));    

Write(dane_file,dane);
 CloseFile(dane_file);  

nie wiem czy w delphi jest funkcja GetOptionValue więc wyjaśnię

funkcja pobiera wartość przekazaną w parametrze

czyli jeśli uruchomię program tak ./program -s localhost lub ./program --server=localhost to funkcja GetOptionValue('s','server') zwróci wartość localhost

 

po pobraniu danych dla pewności wyświetlam je (nie będę już podawał kodu porostu writeln(dane.coś)) i wszystkie dane są prawidłowe

 

ale gdy próbuję wczytać takie dane dostaje w konsoli

server: exception at 0000000000408062:

Access violation.

oczywiście przy podaniu wartości na sztywno w kodzie powoduje że dane są wczytywane poprawnie

macie jakieś pomysły co mogłem popsuć w tak trywialnym kodzie :D

Link do komentarza
Udostępnij na innych stronach

Ja mam taki pomysł, że w plikach typowanych wielkość wszystkich pól w rekordzie musi być stała, czyli w tym przypadku powinieneś dodać w nawiasach kwadratowych długości stringów.

server: string[20];
itp...

Tak przynajmniej jest w Delphi.

Etharnion - 2D RPG

Szukam grafika chętnego do współpracy przy projekcie.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

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

×
×
  • Utwórz nowe...