C++ Borland - Zapis pliku graficznego do katalogu z "automatu" zapisz

C++ Borland - Zapis pliku graficznego do katalogu z "automatu" zapisz
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam

Mam programik który po kliknięciu na button - zapisz - zapisuje wyświetlany plik w strukturze katalog głównego - czyli tam gdzie jest plik exe

Tutaj podaję kod:

Kopiuj
void __fastcall TForm1::ButtonSaveImage2Click(TObject *Sender)
{

Color=clInactiveBorder;

Image2->Picture->Bitmap->SaveToFile(ExtractFilePath(Application->ExeName)+"Image2-"+
                    DateToStr(Date()) +'-'
                   +TimeToStr(Time())[1]
                   +TimeToStr(Time())[2]  +'-'
                   +TimeToStr(Time())[4]
                   +TimeToStr(Time())[5]
                   +".bmp");
ButtonSaveImage2->Caption="zapisano";
}

Chcę zrobić tak aby plik był zapisywany z - "automatu" - bez pytania gdzie ma być zapisany czyli klik na button zapisz i plik jest zapisany do katalogu o nazwie saveimg.

Z góry dziękuję za pomoc.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 7 godzin
0

+TimeToStr(Time())[1]
+TimeToStr(Time())[2] +'-'
+TimeToStr(Time())[4]
+TimeToStr(Time())[5]

Zapisz sobie ten TimeToStr(Time()) do osobnej zmiennej, bo tego się czytać nie da.
Na dodatek tak jak jest teraz, to gdy komp zamuli akurat w czasie wykonywania tych poleceń, możesz dostać [5] z innego czasu (a nawet daty) niż [2].

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0
Kopiuj
Image2->Picture->Bitmap->SaveToFile(ExtractFilePath(Application->ExeName)+"saveimg\\Image2-"+FormatDateTime("hh-nn",Time())+".bmp");

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 3x, ostatnio: _13th_Dragon
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,

serdeczne dzieęi za pomoc.

Ten kod powoduje dalej zapisywanie pliku w katalogu głównym i dodaje do nazwy plik jeszcze przedrostek Wyglada to tak: saveimgImage itd

Kopiuj
Image2->Picture->Bitmap->SaveToFile(ExtractFilePath(Application->ExeName)+"**saveimg**\Image2-"+FormatDateTime("hh-nn",Time())+".bmp");

Natomiast to:

Kopiuj
Image2->Picture->Bitmap->SaveToFile(**saveimg**ExtractFilePath(Application->ExeName)+"saveimg\Image2-"+FormatDateTime("hh-nn",Time())+".bmp");

rozwiazuje problem. Zapis jest w katalogu saveimg.

Jeden warunek - trzeba ręcznie utworzyć katalog saveimg ;-)

PS. Te ** to tylko dla wyróżnienia ;-)


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

Użyj mkdir lub CreateDirectory dla stworzenia folderu.
To co podałeś jako "ozwiazuje problem" nie może nawet się skompilować.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,

Uważam że szanowny forumowicz _13thDragon jest w błądzie.
Ponieważ poniższy kod:

Kopiuj
 void __fastcall TForm1::ButtonSaveImage2Click(TObject *Sender)
{

Color=clInactiveBorder;

Image2->Picture->Bitmap->SaveToFile(ExtractFilePath(Application->ExeName)+"/saveimg/Image2-"+
                    DateToStr(Date()) +'-'
                   +TimeToStr(Time())[1]
                   +TimeToStr(Time())[2]  +'-'
                   +TimeToStr(Time())[4]
                   +TimeToStr(Time())[5]
                   +".bmp");
ButtonSaveImage2->Caption="zapisano";
}

spokojnie się kompiluje, i wykonuje to co ja chcę.

Jednakże, zastanawiam się nad możliwością utworzenia katalogu saveimg z wykorzystując podane przez ciebie komendy.
Nie wiem jednak gdzie je umieścić w kodzie.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
_13th_Dragon
To akurat powinno działać. Natomiast to: "... ToFile(saveimgExtract ..." nawet skompilować się nie może, a piszesz że "rozwiazuje problem".
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
1
Kopiuj
ForceDirectories(ExtractFilePath(Application->ExeName)+"saveimg"); // można też użyć CreateDir lub CreateDirectory
Image2->Picture->Bitmap->SaveToFile(ExtractFilePath(Application->ExeName)+"saveimg\\Image2-"+FormatDateTime("hh-nn",Time())+".bmp"); // pamiętać o podwójnym \\ lub / zamiast

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,

_13th_Dragon - jesteś wielki !

Serdeczne dzieki za pomoc. Wszystko działa jak należy. Dzieki Tobie mam prawo powiedzieć: to już całkowicie rozwiązuje problem :-)

Rozmumiem ze to:

Kopiuj
CreateDir(ExtractFilePath(Application->ExeName)+"saveimg"); 

lub to

Kopiuj
CreateDirectory(ExtractFilePath(Application->ExeName)+"saveimg"); 

to są podobne komendy, ale prowadzą do osiagnięcia zamierzonego celu.

Ja wpisałem tą:

Kopiuj
ForceDirectories(ExtractFilePath(Application->ExeName)+"saveimg"); 

Tych powyższych nie sprawdzałem dlatego się pytam.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
edytowany 1x, ostatnio: kedlaw07
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,
tak sobie jeszcze wymyśliłem że fajnie by było gdyby program informował gdzie zapisał plik graficzny. Chodzi o to że jak kliknę na zapisz to na formatce wyświetlana się informacja gdzie plik został zapisany. Pomyślałem o Label, ale nie wiem gdzie go umieścić.

Chyba że się nie da to opiszę klawisz poprzez opcje 'Hint' z Objectora, zawsze to jakieś wyjście. Chociaż poznawszy forumowicza _13th_Dragon zapewne uzna że to trzeba rozwiązać, a nie iść na łatwiznę.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
edytowany 1x, ostatnio: kedlaw07
_13th_Dragon
Hasurzy! Milczeć!
_13th_Dragon
Jaki masz problem z umieszczeniem Label'a?
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Pomyślałem że gdzieś w tym kodzie który podałem wcześniej a dotyczącym problemu ścieżki do katalogu saveimg. Chcę mieć tak żeby na drugim Label'u pokazywała się informacja gdzie znajduje zapisany plik.

Ten kod służy mi do __pobrani__a pliku:

Kopiuj
 void __fastcall TForm1::ButtonOpenClick(TObject *Sender)
{
Color=clSilver;

if (OpenPictureDialog1->Execute()) {
   Image1->Picture->Bitmap->LoadFromFile(OpenPictureDialog1->FileName);
   NewMatrix();
   ImageToMatrix(1);
   BackupMatrix();
   ButtonOpen->Enabled=false;
   Image2->Picture->Bitmap->Assign(Image1->Picture->Bitmap);
   Image2->Canvas->Rectangle(0,0,MaxX,MaxY);
   Label1->Caption=OpenPictureDialog1->FileName;
   }
ButtonGaussThreshold->SetFocus();
}

Teraz gdy kliknę na otwórz to na formatce w Label'u pokazuje skąd pobiera plik.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
1
Kopiuj
Label2->Caption=ExtractFilePath(Application->ExeName)+"saveimg";

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,

Cóż mogę napisać ?

Chyba tylko to: Mówisz masz. !!!

Jestem pod ogromnym wrażeniem tak szybko udzielanej pomocy, która rozwiązuje moje problemy.

Mam jeszcze jeden ale tu chodzi o formatkę. Jest formatka1 i button który otwiera formatkę2 komendą

Kopiuj
 Form1->ShowModal();

Efekt jest taki że wyświetla się fotmatka2 na wierzchu, a formatka1 jest z tyłu. Teraz pytanko: Jak zrobić żeby po otwarciu formatki2 formatka1 zniknęła.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0
Kopiuj
Application->ShowMainForm=false; // to nie jest konieczne jeżeli Form1 nie jest główną formatką
Form2->Hide;
Form1->ShowModal();
Form2->Show;
Application->ShowMainForm=true; // to nie jest konieczne jeżeli Form1 nie jest główną formatką

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,

tylko że u mnie jest po "chińsku" TForm2 to formatka "startowa" programu - pierwszy ekran programu a TForm1 to formatka która odnosi się do programu na której on się wykonuje.
Czyli na TForm 2 mam tak:

Formatka Startowa

Kopiuj
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
   Form1->ShowModal();
}

a na TForm1 jest umieszczony button który zamyka wszystko - program jak i wszystkie okna.

TForm1

Kopiuj
void __fastcall TForm1::ButtonExitClick(TObject *Sender)
{                                             
DeleteMatrix();
exit(0);        
} 

Serdecznie pozdrawiam szanownych forumowiczów
Waldi
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,
Próbowałem w róże miejsca w tym kodzie wstawić - **

Kopiuj
hide;

** ale nie było żadnego oczekiwanego efektu. Dalej ta formatka był widoczna pod tą właściwą. Którą uruchomiła.

Kopiuj
 //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BitBtn1Click(TObject *Sender)
{
   Form1->ShowModal(); //uruchamia ta wlasciwa formatke
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
 Close(); //zamyka obecna formatke ale nie chowa sie pod ta wlasciwa
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BitBtn2Click(TObject *Sender)
{
Form3->ShowModal(); //uruchamia inna formatkę którą zamykam sam
}
//---------------------------------------------------------------------------

Przepraszam za długi kod ale ja już nie mam siły, a chcę dokładnie zobrazować problem.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
_13th_Dragon
Nie rozumiem czego oczekujesz? Że jeszcze raz wkleję to rozwiązanie co ci wyżej podałem?
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Witam,

Chodzi o to gdzie ten**

Kopiuj
Hide

**w kodzie mam wpisać. bo już się pogubiłem


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
edytowany 2x, ostatnio: kedlaw07
_13th_Dragon
Nie, no przecież to oczywiste, zapisujesz na ścianie i powtarzasz jak mantrę.
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0

Zapisujesz na ścianie i powtarzasz jak mantrę. Na jakiej ścianie ? Bo ja nie zabardzo rozumiem ?


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
_13th_Dragon
Zapisujesz na dowolnej ścianie, byle przed sobą, i powtarzasz jak mantrę dopóki dla ciebie nie będzie oczywistym gdzie to należy zapisać.
K0
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
0
kedlaw07 napisał(a):

Zapisujesz na ścianie i powtarzasz jak mantrę. Na jakiej ścianie ? Bo ja nie zabardzo rozumiem ?
Niestety nadal nie wiem o czym piszesz.


Serdecznie pozdrawiam szanownych forumowiczów
Waldi
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)