![]() |
Datenbank: MSSQL • Version: ? • Zugriff über: TADO Query
Bildpfad eines TImages abspeichern
Hi Leute,
ich versuche aktuell den Pfad eines Bildes in einer Datenbank abzuspeichern. Allerdings habe ich das Problem, dass ich alles nur als "TPicture" und nicht als richtigen Pfad speichere
Delphi-Quellcode:
Das ist die entsprechende Stelle im Code, hoffe jemand kann mir weiterhelfen
// Bild einfügen
procedure TForm1.Image1DblClick(Sender: TObject); begin Image1.Stretch := true; if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.filename); KST_LagerbewertungQuery.Edit; Image1.Picture.SaveToFile(KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString); KST_LagerbewertungQuery.Post; end; end; MfG Luca |
AW: Bildpfad eines TImages abspeichern
Die Lösung ist total simpel, aber es würde für dich als Auszubildenden keinen Lerneffekt geben, wenn wir dir die fertige Lösung hinknallen.
Bitte kommentiere deinen Quelltext mal Zeile für Zeile: WAS und WARUM machst du in der jeweiligen Zeile. Anhand dessen können wir dir Schritt für Schritt helfen. :idea: |
AW: Bildpfad eines TImages abspeichern
Delphi-Quellcode:
procedure TForm1.Image1DblClick(Sender: TObject);
begin Image1.Stretch := true; // Bildgröße anpassen if OpenPictureDialog1.Execute then //Abfrage ob OpenPictureDialog ausgeführt wurde begin Image1.Picture.LoadFromFile(OpenPictureDialog1.filename); //laden des Bildes aus dem OpenPictureDialog KST_LagerbewertungQuery.Edit; //Query Bearbeitung Beginnen Image1.Picture.SaveToFile(KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString); //Bildpfad abspeichenr ?! :?: KST_LagerbewertungQuery.Post; //Query Bearbeitung beenden end; end; |
AW: Bildpfad eines TImages abspeichern
Ok, jetzt bitte die folgende Zeile mithilfe einer Zwischenvariablen auflösen:
Delphi-Quellcode:
Image1.Picture.SaveToFile(KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString);
|
AW: Bildpfad eines TImages abspeichern
Meinst du sowas wie
Delphi-Quellcode:
Bin mir nicht sicher ob ich weiß was Zwischenvariablen sinda := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString; Image1.Picture.SavetoFile(a); |
AW: Bildpfad eines TImages abspeichern
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Delphi-Quellcode:
Versteh ich grade was falsch, es ist doch egal wie die Variablen heißen, oder nicht ?
Bild := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString;
Image1.Picture.SavetoFile(Bild); |
AW: Bildpfad eines TImages abspeichern
Zitat:
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Mal eine kleine Korrektur, vielleicht fällt es dann auf:
Zitat:
Delphi-Quellcode:
//laden des Bildes aus der im OpenPictureDialog ausgewählten Datei (ganzer Pfad)
|
AW: Bildpfad eines TImages abspeichern
Zitat:
Aber nicht für dich, dein zukünftiges ich in zwei Monaten wenn du den Quelltext wieder anschaust und erst recht nicht für deinen Kollegen, der sich deinen Quelltext anschauen muss. Ok, jetzt erkläre mit deinen eigenen Worten, was genau der Aufruf
Delphi-Quellcode:
bewirkt?
Image1.Picture.SavetoFile
Was genau wird in SaveToFile übergeben? |
AW: Bildpfad eines TImages abspeichern
Zitat:
Gruß K-H |
AW: Bildpfad eines TImages abspeichern
@Glados
Okay daran habe ich nicht gedacht, ändere das natürlich dann noch in meinem Programm Ich überprüfe mit einer SQL-Abfrage was ich in meiner Datenbank erhalte was immer ein TPicture ist, schaue ich mir andere Programme an (von Kollegen geschrieben) sieht man dort immer den Pfad |
AW: Bildpfad eines TImages abspeichern
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Was p80286 dir sagen wollte...
Guck dir folgende Zeile an Zitat:
Zitat:
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Zitat:
Die gibt es im Internet (Google ist dein Freund) oder wenn die Hilfe installiert ist ganz klassisch per F1. Kehre danach wieder hierher und erläutere nochmal was SaveToFile macht. |
AW: Bildpfad eines TImages abspeichern
Zitat:
Zitat:
Code:
eingegeben habe und er mir in der Spalte Bildpfad überall TPicture ausgibt.
SELECT Bildpfad FROM Tabelle1
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Okay, dann liegt es wohl daran, dass er mir nur TPicture ausgibt, aber wie speichere ich dann den Pfad ?
|
AW: Bildpfad eines TImages abspeichern
Schau Dir doch meinen Beitrag #9 noch einmal an, Du hast ja den Pfad.
|
AW: Bildpfad eines TImages abspeichern
Zitat:
Zitat:
Du bist in Spalte Bildpfad und bekommst ein TPicture zurück... glaube ich nicht. |
AW: Bildpfad eines TImages abspeichern
Also erhalte ich den Pfad über
Delphi-Quellcode:
und speichere ihn über
Image1.Picture.LoadFromFile(OpenPictureDialog1.filename);
Delphi-Quellcode:
oder habe ich das falsch verstanden ?
Bildname := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsInteger;
Image1.Picture.SavetoFile('Bildname'); |
AW: Bildpfad eines TImages abspeichern
Auf wenn dir "typen" völlig egal sind, dein Delphi will sie;)
Delphi-Quellcode:
Bildname := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString;
Image1.Picture.SavetoFile(Bildname); |
AW: Bildpfad eines TImages abspeichern
Zitat:
Was genau möchtest du erreichen? Ich nehme an, du möchtest den Bildpfad oder von mir aus den Filename in die Datenbank speichern, ist das so korrekt? Drösel doch mal diese Zeile:
Delphi-Quellcode:
so auf
Image1.Picture.LoadFromFile(OpenPictureDialog1.filename);
Delphi-Quellcode:
Macht es jetzt Klick?
var
ImageFileName: string; begin ImageFileName := OpenPictureDialog1.filename; Image1.Picture.LoadFromFile(ImageFileName); ... |
AW: Bildpfad eines TImages abspeichern
@mensch72
Also vorher hatte ich auch .AsString allerdings erhalte ich dann eine Fehlermeldung, bezüglich inkompatibler Typen 'Integer' und 'string', deswegen hatte ich es auf .AsInteger geändert. Ähnliches bei den '' um mein Bildname, dort habe ich die selbe Fehlermeldung nur umgekehrt erhalten. Edit: Mein Fehler hatte die Variable falsch deklariert |
AW: Bildpfad eines TImages abspeichern
Zitat:
Danke euch, auch wenn ich ein schwieriger Fall war(,bzw bin).:-D |
AW: Bildpfad eines TImages abspeichern
Zitat:
Zitat:
|
AW: Bildpfad eines TImages abspeichern
..."Zeigst du die Lösung?"...
=> ja stell dich doch nicht knausrig mit Infos an, was in deiner Tabelle eigentlich drin steht 1. bitte Screenshot vom SQL Explorer: "select * from KST_Lagerbewertung" 2. dann bitte ScreenShot vom Windows DateiExplorer, wo man sie wo und wie die Bilder auf der Platte liegen => Mag ja sein das in Integerfeld in der DB eine BildNummer speichert... dann wäre "iBildNummer" auch die passende DelphiVariable dazu:) => Mag auch sein, das wer die Bilder auf der Platte direkt per Nummer speichert, aber zu 99,9% NEIN... da fehlt ganz sicher das BilderRoot davor und die Dateiendung danach!? Es ist mir schleierhaft, wie du ohne so GrundsatzInfos oder IstAnalyse einfach drauf losprogrammierst :( |
AW: Bildpfad eines TImages abspeichern
Zitat:
Delphi-Quellcode:
procedure TForm1.Image1DblClick(Sender: TObject);
var ImageFileName: string; begin Image1.Stretch := true; if OpenPictureDialog1.Execute then begin ImageFileName := OpenPictureDialog1.filename; Image1.Picture.LoadFromFile(ImageFileName); KST_LagerbewertungQuery.Edit; ImageFileName := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString; Image1.Picture.SavetoFile(ImageFileName); KST_LagerbewertungQuery.Post; end; end; |
AW: Bildpfad eines TImages abspeichern
Ob das so richtig ist? Ich möchte wetten, dass Dein Compiler Dir dezente Hinweise gibt.
|
AW: Bildpfad eines TImages abspeichern
Das ist der Nachteil von Fragend-Entwickelndem-Unterricht in der Forum-Quorum-Variante.
Der Schüler gibt sich mit einer halbwegs fertigen Lösung zufrieden, damit er endlich Ruhe hat. :-D Die Frage ist doch: Was möchtest du wirklich machen? Ich vermute mal: 1. Bild im Dateisystem suchen. 2. Öffnen und Anzeigen. 3. Dann den Pfad zu dem Bild in der Datenbank speichern. Da ist bei dir Punkt 3 noch falsch!
Code:
müsste umgedreht werden!
ImageFileName := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString;
Was du vielleicht unabhängig davon (an anderer Stelle) auch noch möchtest ist: - Gibt es zum Datensatz schon einen Bildpfad in der Datenbank, dann: 1. Prüfen ob es das Bild im Dateisystem gibt 2. Öffnen und anzeigen des Bildes. |
AW: Bildpfad eines TImages abspeichern
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Zitat:
Du möchtest doch den Pfad zur Bilddatei IN die Datenbank SCHREIBEN. Aktuell LIEST du irgendwas AUS der Datenbank. Hast du denn gar keine Aufgabenstellung von deinem Ausbilder bekommen? |
AW: Bildpfad eines TImages abspeichern
Zitat:
Außerdem soll ich über ein OnScroll-Ereignis zwischen den Bildern hin und herscrollen(wenn man in der Datenbank scrollt) und wenn man Rechtsklick auf das Bild in TImage macht soll sich das Bild in einem neuen Fenster größer öffnen (dafür soll ich ShellExecute benutzen). |
AW: Bildpfad eines TImages abspeichern
Dann lag ich ja in #30 nicht schlecht.
Dreh die erste Zeile um und lass die zweite weg und du hast Teil 1 der Aufgabe erfüllt:
Delphi-Quellcode:
ImageFileName := KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString;
//Image1.Picture.SavetoFile(ImageFileName); |
AW: Bildpfad eines TImages abspeichern
Okay danke Jumpy, hab deine Nachricht eben glaube ich teilweise überlesen.
Auf jedenfall speichere ich jetzt die Bildpfade korrekt und kann mich endlich den anderen Aufgaben widmen |
AW: Bildpfad eines TImages abspeichern
Zitat:
Delphi-Quellcode:
KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString := ImageFileName;
//Image1.Picture.SavetoFile(ImageFileName); |
AW: Bildpfad eines TImages abspeichern
Ja das habe ich auch so, auch wenn ich mich im laufe dieses Threads warscheinlich ziemlich duselig angestellt habe, ich weiß noch wie man etwas umdreht :-)
|
AW: Bildpfad eines TImages abspeichern
Zitat:
|
AW: Bildpfad eines TImages abspeichern
Zitat:
Delphi-Quellcode:
tschuldige, hab ja noch eine Zeile "rumgedreht", sieht jetzt so aus
procedure TForm1.Image1DblClick(Sender: TObject);
var ImageFileName: string; begin if OpenPictureDialog1.Execute then begin ImageFileName := OpenPictureDialog1.filename; Image1.Picture.LoadFromFile(ImageFileName); KST_LagerbewertungQuery.Edit; KST_LagerbewertungQuery.FieldByName('Bildpfad').AsString := ImageFileName; KST_LagerbewertungQuery.Post; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz