Entwickler-Ecke
Sonstiges (Delphi) - String im Datenname
Hyperia - Di 29.05.07 20:18
Titel: String im Datenname
Hi ich Bräuchte mal kurze hilfe
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button2Click(Sender: TObject); var zahl : integer; p : TFileName;
begin zahl:= 1; P:='C:\Screenie.bmp';
RenameFile('C:\Screenie.bmp', 'C:\Screenie2.bmp') ; |
in die zeile soll bei Screenie2 als 2 ne Variable eingebaut werden die sich bei jedem klick um eins erhöht
wie bekomm ich das hin?
bitte um antwort
Euer Nobby Hyp
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Narses - Di 29.05.07 20:24
Moin und :welcome: im Forum!
Hyperia hat folgendes geschrieben: |
in die zeile soll bei Screenie2 als 2 ne Variable eingebaut werden die sich bei jedem klick um eins erhöht |
Lösungsidee: :idea:
- im
FormCreate() setzt du
Button2.Tag := 0; (Zähler initialisieren)
- in der
OnClick-Methode für Button2 machst du als erstes:
Button2.Tag := Button2.Tag +1; damit der Zähler beim Klicken weiter läuft.
- Und dann baust du testweise diese Zeile in den
OnClick-Handler:
ShowMessage(IntToStr(Button2.Tag)+' mal geklickt!'); ein
Den "Rest" kannst du dann auch sicher alleine zusammenbauen. ;)
cu
Narses
Hyperia - Di 29.05.07 20:27
ähmm das versteh ich soweit , aber wies weiter geht kann ich mir leider auch noch nicht denken
habe heut angefangen mit delphi , also steh noch am absoluten anfang ^^
edit :: ich kann ja mal den quelltext posten damit du siehst wa sich vorhab
Narses - Di 29.05.07 20:30
Moin!
Hyperia hat folgendes geschrieben: |
ähmm das versteh ich soweit |
Gut, dann zeig mal deinen Code, der das, was ich vorgeschlagen habe, umsetzt; dann sehen wir weiter. ;)
cu
Narses
Hyperia - Di 29.05.07 20:31
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, JPEG, ShellApi, Menus, ComCtrls;
type TForm1 = class(TForm) Button2: TButton; Button1: TButton; Button3: TButton; Button4: TButton; CheckBox1: TCheckBox; Button5: TButton;
procedure Button5Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
Procedure BmpToJpg(const Filename: String; Quality: TJPEGQualityRange=100); var Bmp: TBitmap; Jpg: TJpegImage; begin Bmp:=TBitmap.Create; Jpg:=TJpegImage.Create; try Bmp.LoadFromFile(Filename); Jpg.CompressionQuality:=Quality; Jpg.Assign(Bmp); Jpg.SaveToFile(ChangeFileExt(Filename, '.jpg' )); finally Jpg.Free; Bmp.Free; end; end;
procedure SaveAppScreen(const SaveBmpFileName: string); var Bitmap: TBitmap; Canvas: TCanvas; begin Canvas := TCanvas.Create; try Canvas.Handle := GetWindowDC(0); try Bitmap := TBitmap.Create; try Bitmap.Width := Application.MainForm.Width; Bitmap.Height:= Application.MainForm.Height; Bitmap.PixelFormat := pfDevice; BitBlt(Bitmap.Canvas.Handle, 0, 0, Pred(Application.MainForm.Width), Pred( Application.MainForm.Height), Canvas.Handle, Application.MainForm.Left, Application.MainForm.Top, Bitmap.Canvas.CopyMode); Bitmap.SaveToFile(SaveBmpFileName); finally FreeAndNil(Bitmap); end; finally ReleaseDC(0, Canvas.Handle); end; finally FreeAndNil(Canvas); end; end;
procedure TForm1.Button2Click(Sender: TObject); var zahl : integer; p : TFileName;
begin zahl:= 1; P:='C:\Screenie.bmp';
RenameFile('C:\Screenie.bmp', 'C:\Screenie2.bmp') ; SaveAppScreen(p); if CheckBox1.Checked then begin BmpToJpg(p); deletefile(p); end;
end;
procedure TForm1.Button4Click(Sender: TObject); begin Form1.Width := 800; Form1.Height := 600
end;
procedure TForm1.Button3Click(Sender: TObject); begin Form1.Width := 1024; Form1.Height := 768 end;
procedure TForm1.Button1Click(Sender: TObject); begin Form1.Width := 1280; Form1.Height := 1024; end;
procedure TForm1.FormShow(Sender: TObject); begin Form1.ScreenSnap := true; Form1.SnapBuffer := 30; end;
procedure TForm1.Button5Click(Sender: TObject); var p : TFileName; j : TFileName;
begin P:='C:\Screenie.bmp'; j:='C:\Screenie.jpg';
if ShellExecute(Application.Handle, 'open', PChar(p), Nil, Nil, SW_NORMAL) <= 32 then ShellExecute(Application.Handle, 'open', PChar(j), Nil, Nil, SW_NORMAL)
end;
end. |
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Narses - Di 29.05.07 20:33
Was soll ich damit? :nixweiss:
Narses hat folgendes geschrieben: |
Gut, dann zeig mal deinen Code, der das, was ich vorgeschlagen habe, umsetzt; dann sehen wir weiter. |
Hyperia - Di 29.05.07 20:36
achso sry,
ich weiß leider nicht wo ich FormCreate finde
oder wo ich das erstelle
Narses - Di 29.05.07 20:38
Moin!
Hyperia hat folgendes geschrieben: |
ich weiß leider nicht wo ich FormCreate finde
oder wo ich das erstelle |
Mach einen Doppelklich auf dem Formularhintergrund. ;)
Mir reicht übrigens der Button2-Handler, der restliche Code dürfte ja wohl eher uninteressant sein. :?
cu
Narses
Hyperia - Di 29.05.07 20:44
:D soweit klappt alles
also Button 2 handler ??
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button2Click(Sender: TObject); var zahl : integer; p : TFileName;
begin Button2.Tag := Button2.Tag +1;
ShowMessage(IntToStr(Button2.Tag)+' mal geklickt!');
P:='C:\Screenie.bmp';
RenameFile('C:\Screenie.bmp', 'C:\Screenie2.bmp') ; SaveAppScreen(p); if CheckBox1.Checked then begin BmpToJpg(p); deletefile(p); |
Und FormCreate
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.FormCreate(Sender: TObject); begin Button2.Tag := 0; end;
end. |
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
Narses - Di 29.05.07 20:50
Moin!
Hyperia hat folgendes geschrieben: |
:D soweit klappt alles |
Fein. ;)
Delphi-Quelltext
1: 2: 3:
| ShowMessage(IntToStr(Button2.Tag)+' mal geklickt!');
RenameFile('C:\Screenie.bmp', 'C:\Screenie2.bmp'); |
Dann kann es ja jetzt nicht mehr soo schwer sein... :P
cu
Narses
Hyperia - Di 29.05.07 20:53
DOCH
das klappt einfach iwi net
wenn ich das mach sieht das so aus
RenameFile('C:\Screenie.bmp', 'C:\Screenie(IntToStr(Button2.Tag)+'.bmp')') ;
aber das lässt sich dann net compilen
Narses - Di 29.05.07 20:58
Moin!
Bitte schließe deinen Delphi-Code auch in entsprechenden Tags ein, damit das Syntax-Highlighting aktiv wird (einfach den Quelltext markieren und auf das "+" neben "Delphi" oben im Editor klicken), danke!
Jetzt zu deinem Problem: Eine Textkonstante wird in Delphi (also in Pascal) mit einem Hochkomma eingeleitet und abgeschlossen. Jetzt prüfen wir diese Regel mal an deinem Quelltext: :?
Delphi-Quelltext
1:
| RenameFile('C:\Screenie.bmp', 'C:\Screenie(IntToStr(Button2.Tag)+'.bmp')'); |
cu
Narses
Hyperia - Di 29.05.07 21:12
sry aber ich weiß net was ne Textkonsonate ist :(
das is der teil , wo bis jezz alle versuche bei mir gescheitert sind
SAiBOT - Di 29.05.07 21:37
Delphi-Quelltext
1:
| RenameFile('C:\Screenie.bmp', PCHAR('C:\Screenie'+IntToStr(Button2.Tag)+'.bmp')); |
Hyperia - Di 29.05.07 21:52
DANKE
ihr habt mir sehr weiter geholfe
und jezz muss ich net nochmal fragen^^
MfG HyP
Narses - Di 29.05.07 22:21
Moin!
-=LordEvil=- hat folgendes geschrieben: |
Delphi-Quelltext 1:
| RenameFile('C:\Screenie.bmp', 'C:\Screenie'+IntToStr(Button2.Tag)+'.bmp'); | |
Das
PChar() ist nicht notwendig (genau genommen: überflüssig!), der Parameter ist als (Ansi-)String deklariert. :?
Warum du allerdings den Fragesteller die geradezu hirnzermarternde Aufgabe
'C:\Screenie'+ vor das
IntToStr() zu setzen nicht selbst hast lösen lassen, ist mir noch nicht ganz klar... :| (wo doch der Code klar c&p-"Programmierung" ahnen lässt... :( )
cu
Narses
SAiBOT - Di 29.05.07 22:41
Narses hat folgendes geschrieben: |
Moin!
-=LordEvil=- hat folgendes geschrieben: | Delphi-Quelltext 1:
| RenameFile('C:\Screenie.bmp', 'C:\Screenie'+IntToStr(Button2.Tag)+'.bmp'); | |
Das PChar() ist nicht notwendig (genau genommen: überflüssig!), der Parameter ist als (Ansi-)String deklariert. :?
Warum du allerdings den Fragesteller die geradezu hirnzermarternde Aufgabe 'C:\Screenie'+ vor das IntToStr() zu setzen nicht selbst hast lösen lassen, ist mir noch nicht ganz klar... :| (wo doch der Code klar c&p-"Programmierung" ahnen lässt... :( )
cu Narses |
Pchar?:
jo stimmt, Irrtum.
c&p?:
Ich bin nicht so der c&p-Feind, ob er nun danach sucht, es lernt, oder ich ihm die Lösung poste und er sie studiert und lernt! Außerdem, wenn er sucht wird er es auch nur übernehmen... aus einer anderen Quelle halt... im Prinzip nix anderesl, nur Zeitaufwändiger.
Und verstehen wird er die Syntax jawohl!
mfg
Narses - Di 29.05.07 23:31
Moin!
-=LordEvil=- hat folgendes geschrieben: |
c&p?:
Ich bin nicht so der c&p-Feind, ob er nun danach sucht, es lernt, oder ich ihm die Lösung poste und er sie studiert und lernt! |
Hach, diese brilliante Kombinationsgabe... :flehan: danke, dass du uns das Problem noch schnell gelöst hast, da wären wir ja im Leben nicht drauf gekommen... :roll:
-=LordEvil=- hat folgendes geschrieben: |
Außerdem, wenn er sucht wird er es auch nur übernehmen... aus einer anderen Quelle halt... im Prinzip nix anderesl, nur Zeitaufwändiger. |
Selber suchen ist immer noch besser, als selber abschreiben
unter der Lupe war die Verlockung "ich weiß es, ich weiß es" zu rufen, wohl doch größer, als die schwächlichen Ausreden jetzt noch kaschieren können, hm? :/
:|
Narses
Nilan - Mi 30.05.07 00:01
Ich bin jemand, der sich eher nur die Beiträge durchliest, als selber zu posten.
Hier MUSS ich mich aber einfach einmischen, könnt ihr diese Diskussion, die durchaus häufig hier zu finden ist nicht wo anders durchführen? Obwohl ich sagen muss, dass ich vollkommen Narses zustimme, da ich selber immer versuche, etwas zu verstehen, bevor ich es auch übernehem.
Naja, ich wollte euch nicht persönlich angreifen oder so, also nehmts bitte nicht schlecht auf :wink:
Nilan :)
Narses - Mi 30.05.07 00:20
Moin!
Nilan hat folgendes geschrieben: |
könnt ihr diese Diskussion, die durchaus häufig hier zu finden ist nicht wo anders durchführen? |
Nein, denn wo die Hobelspäne fallen, muss auch mal gefegt werden, sonst kann man irgendwann nicht mehr durch die Werkstatt laufen... :| (auch wenn du grundsätzlich Recht hast, das ist OT - und deshalb mein letzter Beitrag hier im Thread)
Nilan hat folgendes geschrieben: |
Obwohl ich sagen muss, dass ich vollkommen Narses zustimme, da ich selber immer versuche, etwas zu verstehen, bevor ich es auch übernehem. |
So ist es; die Qualität dieses Forums wird nur dann gut sein, wenn die Hilfe, die man hier kriegt, nachhaltig ist. Einfache Lösungen "vorzusagen" und "code-without-comment" sind vielleicht die schnellere Variante (und die für´s Ego :P), aber sicher nicht die Bessere! :nixweiss:
cu
Narses
Nilan - Mi 30.05.07 00:59
Ok, schön dass man wenigstens mit einigen vernünftig reden kann ;)
Und natürlich freu ich mich auch, dass du das nicht in den falschen Hals bekommen hast.
Narses hat folgendes geschrieben: |
[...](auch wenn du grundsätzlich Recht hast, das ist OT - und deshalb mein letzter Beitrag hier im Thread)[...]
|
Und wieder muss ich mich dir anschließen.
Nilan
Hyperia - Mi 30.05.07 14:08
hmm k ich verstehe
ich hätte es vllt auch iergendwie selbst rausbekommen.
aber es sind meistens kleinigkeiten die mir fehler bereiten oder halt praxis mangel.
zb schreib form , wie in dem beispiel.
naja mal gucken ob ich selbst hinbekomm , das die letzde zahl gespeichert wird , und es nächste mal dort weiter geht
vllt iergendwie mit ner textdeti
MfG hyp
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!