Problem z Savedialog

Novitius
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 18 lat
0

Witam

Problem polega na tym, ze w pewnym miejscu programu uzytkownik MUSI zapisac zmienne z edit'ow do pliku. Sam sposob zapisania opracowalem, ale chodzi mi o to ze gdy wyskoczy savedialog i ktos zamiast kliknac Zapisz walnie w Anuluj to dane sie nie zachowaja... Chcialbym aby kod zapetlal sie do momentu klikniecia zapisz tak aby uniemozliwic anulowanie zapisu.

Probowalem tak:

Kopiuj
savedialog1.execute;
if fileexists('c:\mojplik') then;

kod wykonuje sie szybciej niz zapisanie pliku wiec nawet jesli ktos kliknie zapisz to if fileexist wykona sie zanim plik realnie powstanie na dysku

Probowalem tez tak:

Kopiuj
repeat savedialog1.execute until savedialog1.execute:=true;

ale taka linia powoduje ze owszem, zapetlenie jest, natomiast kiedy klikniemy Save, to onko pokazuje sie po raz kolejny ..

Pomocy ;-(


Novitius "If You come with nothing, You leave with nothing..."
Cool_Programming
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 7 lat
0

Możesz spróbować ze znienawidzoną przez programistów procedurą

Kopiuj
goto
Kopiuj
label SaveAgain;
begin
SaveAgain:
SaveDialog1.Execute;
IF SaveDialog1.FileName = ''' then goto SaveAgain;
end;
Młody
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 10 lat
  • Postów:418
0

ja bym to zrobił tak :

Kopiuj
var zapisano : Boolean

begin
   Repeat
      zapisano := False;
      if savedialog.execute then
        begin
           // zapis do pliku;
           zapisano := True; 
        end
   Until zapisano;
end

może kodzik trochę przydługawy, ale nie ma goto :-8

DO
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 15 lat
  • Postów:731
0

Tak jest prościej:

Kopiuj
var
  Zapisano : Boolean;
begin
  zapisano := false ;
  while not Zapisano do
    Zapisano := savedialog1.execute;
end;

80% problemów które pojawiają sie na forum w postach rozwiązaliby samodzielnie ich autorzy, gdyby nie mieli internetu...
mirekpil
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
  • Postów:481
0

to może jeszcze prościej:

Kopiuj
while not savedialog1.Execute do;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.