Pomoc przy podstawieniu tablicy

0

Witam Serdecznie, chciałabym napisać prosty przelicznik walut , fragment kodu wygląda tak:
Oczywiście dane są " wymyślone"

waluta[0]:=1,0; //pln
waluta[1]:=2,5; //dolar
waluta[2]:=4; // funt

i teraz mając pole edit1 chcę uzyskać zmianę wartości np pln z 1,0 zmienić na 4,0

myślałam nad czymś takim

Waluty[0]:=PLN; //PLN
Waluty[1]:=DOLAR; //DOLAR
Waluty[2]:=FUNT; //FUNT

Edit1.Text:= i teraz nie wiem jak podstawić owe PLN ... Proszę o pomoc... Pozdrawiam Iwona

0

Na początek zadeklaruj tablice z nazwami i wartościami walut.

var
  NazwyWalut: array [0..2] of String = ('Pl', 'Dolar', 'Funt');
  WagiWalut: array [0..2] of Double = (1.0, 2.5, 4.0);

No a potem przeliczasz i wyświetlasz np. tak

Edit1.Text := 'bla bla bla' + NazwyWalut[1];
0

Napisz czego dokładniej nie rozumiesz. Z Twojego postu też dużo się nie dowiedziałem.

0
NazwyWalut[1];

i zapomnisz co to jest to „jeden”.

type TWaluta = (ZLOTY, DOLAR, FUNT);

var NazwyWalut:array[TWaluta] of string = ('złoty','dolar','funt');
...
Edit1.Text := 'bla bla bla ' + NazwyWalut(DOLAR);
0

Wpadłam na trochę łatwiejszy sposób mianowicie:

Form1

Waluty[0]:=1.0; //PLN
Waluty[1]:=StrToFloat(Edit2.Text); //DOLAR
Waluty[2]:=StrToFloat(Edit3.Text); //FUNT

wprowadzam dane w edit i wszystko działa, teraz chciałabym to zrobić na drugiej formie
(schemat)
Podaj nową wartość Dolara:
[ ]
Podaj nową wartość Funta;
[ ]
[OK]

tylko nie wiem jak się odwołać w buttonie na drugiej formie

procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Waluty[1]:=StrToFloat(Edit2.Text); // < - - - tu jest błąd i nie wiem jak sobie z tym poradzić.
end;

0

Staraj się czytać i rozumieć błędy. Najprawdopodobniej chodzi o to że nie dołączyłaś moduły z Form1 do modułu z Form2.
Jeżeli nie zmieniałaś nazw, to do uses Formy2 dodaj słóko "unit1".

0

Nic z tego, jakiś inny pomysł ?

0

Poradziłam sobie , dziękuje wszystkim :). Prosiłabym jeszcze pomoc w zapisie z wykorzystaniem SaveDialog mianowicie:

if savedialog1.execute then
begin
memo1.lines.savetofile(savedialog1.filename);
end;

a ja bym chciała zapis z 2 pól czyli memo1 i memo2. dołożenie memo2.lines.save(...) nie działa ktoś pomoże?

0

A konkretnie to o co chodzi?
Czy chcesz zapisać memo1 do jednego pliku a memo2 do innego?
Czy do jednego pliku chcesz zapisać memo1 i następnie dopisać do niego memo2?

0

O ile dobrze zrozumiałem, to rozwiązań jest kilka. Można utworzyć obiekt TStringList, ustawić jego własność Text na Memo1.Text + Memo2.Text + Edit1.Text + Edit2.Text, a następnie zapisać przez SaveToFile('nazwa_pliku.coś'); i zwolnić obiekt TStringList przez Free. Ewentualnie skorzystać z takiej funkcji pokazanej poniżej, a działającej także pod czystym WinAPI. A jak używać TStringList bez problemów dowiesz się z wielu stron możliwych do wygooglowania.

function SaveTextToFile(AFileName : string; InStr : string) : boolean;
var
  OutFile : THandle;
  BytesWritten : DWORD;
  OutFileSize : integer;
begin
  OutFile := CreateFile(PChar(AFileName), GENERIC_WRITE,
    FILE_SHARE_READ, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  Result := OutFile <> INVALID_HANDLE_VALUE;
  if Result then
  begin
    OutFileSize := Length(InStr);
    WriteFile(OutFile, InStr[1], OutFileSize, BytesWritten, nil);
    CloseHandle(OutFile);
  end;
end;
0
pelsta napisał(a)

A konkretnie to o co chodzi?
Czy chcesz zapisać memo1 do jednego pliku a memo2 do innego?
Czy do jednego pliku chcesz zapisać memo1 i następnie dopisać do niego memo2?

doo jednego pliku textowego zapisać zawartość memo1 + zawartość memo2

0

No to może dorobić zmieną i zmieną ustawić na wartość = 1memo + 2 memo
i dopiero to zapisać :-)?

0

Memo1:

jabłko
gruszka

Memo2:

widelec
nóż

Przykład 1:

jabłko widelec
gruszka nóż

Przykład 2:

jabłko
gruszka
widelec
nóż

O który przykład Ci chodzi?

0

więc jak będzie wyglądał zapis z Memo1 oraz Memo2 do jednego pliku txtowego?

0

Może najpierw dokładnie wytłumacz, co chcesz uzyskać ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1