RENAME, zmiana nazwy pliku

0

Witam,
Pytanie o pomoc dotyczy fragmentu kodu odpowiedzialnego za robienie screena.
Wiem że program który zaprezentuje pod spodem jest troszkę na koło ale z pewnych powodów tak musi na razie być.

Sprawa jest prosta - program robi screen z .bmp, następnie przerabia go na .jpeg.
Wszystko działa pięknie.
Screen pozostaje na końcu z nazwą screen.jpeg
Zależy mi aby z formy4 pobrał z 2 komponentu edit, parametr text. Komponenty te nazwane są w moim programie pole_imie i pole_nazwisko.

Pytanie brzmi jak w formie4 na końcu programu pobierał te dwa text aby screen na koniec miał nazwę
pole_imie(spacja)pole_nazwisko.jpeg


procedure zamiana;
var
  RysunekJPEG : TJPEGImage;
  RysunekBMP  : TBitmap;

begin
  RysunekBMP:=TBitmap.Create;
  try
    RysunekBMP.LoadFromFile('C:\kalkulatorek\screen\screen.BMP');
    RysunekJPEG:=TJPEGImage.Create;
    try
      RysunekJPEG.Assign(RysunekBMP);
      RysunekJPEG.SaveToFile('C:\kalkulatorek\screen\screen.JPEG');
    finally
     RysunekJPEG.Free;
     end;
  finally
  RysunekBMP.Free;
end;
end;

procedure screena;
var
  Can: TCanvas;
  B: TBitmap;
begin
  try
 { tworzenie zmiennej }
    Can := TCanvas.Create;
 { przechwycenie uchwytu ekrnau }
    Can.Handle := GetWindowDC(GetDesktopWindow);
  //  tworzenie bitmapy }
    B := TBitmap.Create;
    B.Width := Screen.Width;
    B.Height := Screen.Height;
    B.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), Can, Rect(0, 0, Screen.Width, Screen.Height));
    try // zapisz plik
      B.SaveToFile('C:\kalkulatorek\screen\screen.bmp');
   except // w wyniku bledu...
     raise Exception.Create('Bład w zapisie pliku...');

   end;
  finally
    Can.Free;
    B.Free;
  end;

end;


procedure TForm2.Button1Click(Sender: TObject);

begin
screena;
zamiana;
deletefile('C:\kalkulatorek\screen\screen.bmp');

/// w tym miejscu powinna nastąpić zmiana nazwy pliku !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


close;
form1.show;
end;
end.

za wszelką pomoc będę bardzo wdzięczny.

0
  with Form4 do
  begin
    RysunekJPEG.SaveToFile(Pole_Imie.Text + ' ' + Pole_Nazwisko.Text + '.jpg');
  end;

Nazwa pliku nie zmieniać, od razu zapisać ją pod taka nazwa jak chcieć. I Ty się uczyć podstawa. Poczytać kompendiuma na strona 4p najlepiej. Ty także pisać po polska język bardziej prawidłowo. Ja wiem, że ja nie przebić stylem tego anonim co udawać murzyna w wątku o pewnym crackme, ale jak ja widzieć Twoja pytanie to mi się ten wątek przypomnieć. Być on do poczytania rownież na strona: http://ludzie.4programmers.net/bash/?65 powodzenia życzyć w dalsza samodzielna programowania nauka.

0

Świetnie! Dziękuje bardzo to w 80% rozwiązuje mój problem.
W jaki sposób zapisać ten plik o tej już docelowej nazwie w konkretnym miejscu na dysku? Tzn - nazwa 'C:\kalkulatorek\screen\pole_imie+pole_nazwisko.jpeg' ?

0

Nie wiem czy dobrze rozumiem Twój "problem", bo chyba nie wiesz o istnieniu takiego komponentu jak TSaveDialog, bo najlepiej z niego będzie skorzystać. Przy jego użyciu możesz zapisac plik podając jego nazwę oraz miejsce zapisu. A jak chcesz nazwę pobrać koniecznie z editów, to zrób to również ze ścieżką, dodaj dodatkowy Edit, z ReadOnly ustawionym na True i do tego jeśli chcesz wygodnie obsłużyć okno wyboru to skorzystaj z modułu, który dołaczyłem do tego posta. Powstał on w celu użycia tego dialogu pod czystym WinAPI, ale nada się również oczywiście pod VCL, bo to wycięte fragmenty z modułu ShlObj i dostosowane do moich potrzeb. Dodajesz moduł mini_shlobj do sekcji uses i możesz użyć go na przykład tak (jako katalog startowy można dać pusty string):

var
  AFolder : string;
begin
  if FolderBrowseDialog(Application.Handle,
    'D:\a\tutaj\opcjonalnie\katalog\startowy',
    'Wybierz jakiś folder:', AFolder) then
  begin
    TwojEdit.Text := AFolder;
  end;
end;
0

Celem programu jest obsługa klientów - potrzebuje zrzutów ekranu ze strony która zasadniczo nie pozwala na eksportowanie danych. Chodziło też oto aby automatycznie był robiony screen, następnie nazywany od konkretnego klienta. Później ten screen podpięty jest do klienta. Zależy mi też aby działało to automatycznie, bez wybierania folderu itp itd.

@olesio
Bardzo dziękuje, to całkowicie wyczerpuje moje pytanie!

Temat do zamknięcia.

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