AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein OpenDialog gibt als Filename unsinnige Werte zurück...
Thema durchsuchen
Ansicht
Themen-Optionen

OpenDialog gibt als Filename unsinnige Werte zurück...

Ein Thema von Drosera · begonnen am 1. Jan 2013 · letzter Beitrag vom 1. Jan 2013
Antwort Antwort
Drosera

Registriert seit: 1. Jan 2013
Ort: Lich
15 Beiträge
 
Delphi 7 Personal
 
#1

OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 10:13
Ersteinmal: Hallo an alle die über diesen Beitrag stolpern und
Jaaa... ich oute mich als Newbe, ist mir aber Wurscht

Mein Problemchen:

Bei >> Label1.Caption := ExtractFilename(od1.FileName); <<

Sollte ja soetwas wie z.B. >> IchBinEinDateiname.bla <<
herauskommen. Aber tut es nicht. Mein Ergebnis sieh z.B. aus wie >> |X| << oder >> é§| << etc. und "feddisch is".
Ich hab's auch probiert mit Konvertierung >> string(ExtractFilename(od1.FileName)); <<
Habe auch (nach einigem wühlen) die Compilerdirektive {$H+} gesetzt um evtl. Schwierigkeiten zwischen String und AnsiString aus dem Wege zu gehen. Hat aber leider "ooch nüscht" genutzt.

Any suggestions??

Falls die Fragestellung (und deren Lösung) bereits einmal aufgetauch sein sollten, bitte ich um Verzeihung, aber gebt mir dann zumindest einen Tip wo ich es finde.
Thomas
Der Morgen graut... mir auch
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 10:24
Welche Delphi-Version verwendest du?
Enthält der Pfad/Dateiname Unicode-Zeichen?
Welchen Wert hat od1.FileName im Debugger?
Etwas mehr Code wäre nicht verkehrt.
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Drosera

Registriert seit: 1. Jan 2013
Ort: Lich
15 Beiträge
 
Delphi 7 Personal
 
#3

AW: OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 10:47
Hi Andreas!

Erstmal: Danke für die schnelle Antwort.

Betriebssystem: Win XP mit ServiceP. 3

Unicodezeichen sind keine drin. Ein Verzeichnis mit der Bezeichnung >> C:\Delphi7 << und dem Dateinamen >> BORLAND.GIF << liefert u.a. auch besagten Mist.

Das "Programm" wenn man es denn so nennen will, besteht aus einem Button der beim Click-Event den OpenDialog aufruft.

Wenn ich den OpenDialog über seinen "Öffnen"-Button verlasse soll einfach nur der selektierte Dateiname in einen Label geschrieben werden.
Somit ist die Zeile
Label1.Caption := ExtractFilename(od1.FileName); im Prinzip schon alles was ich tatsächlich selber verzapft haben

Hmmm.... sofern ich keinen Fehler beim debuggen gemacht habe, sieht es so aus, dass
a) wenn ich die Befehlszeile erreiche wohl nur ein leerer String dort steht und
b) nach verlassen der Zeile "OpenDialog1.FileName: Auf Variable 'Self' kann wegen Optimierung nicht zugegriffen werden" steht.

Kann es sein, dass die Variablen des Dialogs nach dem "Öffnen"-Event nicht mehr zur Verfügung stehen?
Bzw. was wohl eher der Fall sein mag: Ich habe die *räusper "Verarbeitung" beim OpenDialog in das onClose Event reingelegt. Liegt es evtl. daran?
Thomas
Der Morgen graut... mir auch

Geändert von Drosera ( 1. Jan 2013 um 11:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.358 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 11:04
Viel wichtiger ist noch um welche Delphiversion es geht.

Oder geht es um Lazarus? Da gibt es in der Hinsicht viele "schöne" Sachen zu entdecken...
Dann musst du da vielleicht eine manuelle Umwandlung von UTF-8 in Ansi oder umgekehrt vornehmen. (Auch wenn ich das an der Stelle kaum vermute.)

Häng doch einfach mal dein Projekt an. Dann kann es jemand mal bei sich 1:1 testen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 11:10
Ich habe die *räusper "Verarbeitung" beim OpenDialog in das onClose Event reingelegt. Liegt es evtl. daran?
Das wird dann wohl das Problem sein. Gestalte dein ButtonClick-Event in etwa so:

Delphi-Quellcode:
  if od1.Execute then
    Label1.Caption := ExtractFileName(od1.Filename);
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Drosera

Registriert seit: 1. Jan 2013
Ort: Lich
15 Beiträge
 
Delphi 7 Personal
 
#6

AW: OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 12:42
Vielen Dank für die Antworten

@Andreas: Joh, des wars....

@jaenicke: Danke auch für dein Interesse, zum Glück wars aber ohne größeren Aufwand lösbar

Aber wieso konnte ich die Werte nicht beim onClose Event abfangen?
(Ich hoffe die Frage ist nicht zu dämlich, bzw. einfach zu beantworten)
Thomas
Der Morgen graut... mir auch
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: OpenDialog gibt als Filename unsinnige Werte zurück...

  Alt 1. Jan 2013, 13:16
Also wäre es der Tipp von jaenicke nicht gewesen, hätte ich gefragt wie lang der Pfad ist. Jenseits einer bestimmten Länge (die Maxlänge fällt mir jetzt auch nicht ein) gibt es von Programm zu Programm gelegentlich verrückte Ergebnisse. Einige Programme kommen mit der Überlänge klar, andere wiederum nicht.

Aber zu deinem Problem mit OnClose. Ich hatte vor Tagen auch ein "Problem" mit OnSave, allerdings ging es da um OnTypeChange. Da haben wir festgestellt, dass Zugriffe auf das Dialog Fenster, während es noch offen, bzw. aktiv ist, nicht ohne weiteres möglich sind. Erst wenn das Fenster wieder geschlossen ist, kann man mit "normal" FileName arbeiten. Somit stellt sich die Frage wann OnClose genau ausgelöst wird, bevor der Wert an FileName übergeben wird oder nachdem. So wie ich es erkennen kann wird es vorher ausgelöst, d. h. FileName enthält noch gar nicht den neuen Pfad, sondern ein Wirrwarr von Zeichen.

Übrigens, ich konnte deine verrückten Zeichen nachbilden mit:

Delphi-Quellcode:
procedure TForm1.od1Close(Sender: TObject);
begin
  ShowMessage(Od1.FileName);
end;
Also, OnClose ist für das was du abfragst ungeeignet, da der FileName Wert noch nicht übergeben wurde. Letztendlich sollte man dazu Execute nutzen, dazu ist es auch gedacht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz