ShowMessage kürzt lange Dateinamen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
LazProgger
Beiträge: 63
Registriert: Di 11. Mär 2014, 00:33

ShowMessage kürzt lange Dateinamen

Beitrag von LazProgger »

Bei der Ausgabe eines Dateinamens mit der ShowMessage-Funktion bekomme ich eine gekürzte Variante des Dateinamens anstatt den vollen Dateinamen angezeigt. Also so etwas wie "C:\Users\XX\YY\...\Datei.TXT" anstatt den Namen ohne die Punkte.

Gebe ich den selben String mit dem Dateinamen zum Beispiel in einem Memo aus, ist er komplett. Es kann also nicht an dem String oder der String-Variable liegen.

Gerne möchte ich auch den vollen Dateinamen mit der ShowMessage Funktion anzeigen lassen. Geht das irgendwie? Alle anderen langen Strings werden komischerweise richtig durch ShowMessage angezeigt, der Fehler tritt nur bei Dateinamen auf.

PS: Ich benutze Windows 7 und Lazarus 1.0.14.

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: ShowMessage kürzt lange Dateinamen

Beitrag von creed steiger »

Wird wohl weniger an showmessage liegen.
Wie ermittlest du den den denn Dateinamen/Pfad?

LazProgger
Beiträge: 63
Registriert: Di 11. Mär 2014, 00:33

Re: ShowMessage kürzt lange Dateinamen

Beitrag von LazProgger »

Der Pfad/Dateiname ist in einer lokalen Variable als String gespeichert und den habe ich selbst zusammengesetzt:

Code: Alles auswählen

s:='C:\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Datei.dat';
showmessage(s);
Gibt die Ausgabe: C:\Ordner\Ordner\Ordner\Ordner\Ordner\O...\Datei.dat'

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ShowMessage kürzt lange Dateinamen

Beitrag von hde »

Lazarus 1.2RC2 -fpc 2.6.2 unter Win32
Dateianhänge
2014-03-13_030256.png
2014-03-13_030256.png (5.17 KiB) 1820 mal betrachtet

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ShowMessage kürzt lange Dateinamen

Beitrag von hde »

unter Win7 64bit
Dateianhänge
2014-03-13_031444.png
2014-03-13_031444.png (2.79 KiB) 1820 mal betrachtet

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ShowMessage kürzt lange Dateinamen

Beitrag von hde »

auch wenn unter winXP kompiliert wird, zeigt Win7--64bit as obige Bild,
liegt also wohl an der Windowsversion
hde

LazProgger
Beiträge: 63
Registriert: Di 11. Mär 2014, 00:33

Re: ShowMessage kürzt lange Dateinamen

Beitrag von LazProgger »

Dann bin ich wohl nicht der einzige, bei dem das passiert..

Gibts irgendeine Möglichkeit dieses Verhalten abzustellen?!

Mathias
Beiträge: 6912
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ShowMessage kürzt lange Dateinamen

Beitrag von Mathias »

Ich habe auch ein bisschen probiert.

Code: Alles auswählen

  s:= 'kgjlhgjgljkljgklhjgkljlö dfgköljdkslhjgkjnkldsn jhklgnhgklhjdlkghjk ljhklgjhklhjklhöjhk lfjhklfdjhklfdjhlkhjfkl hjdflkhfjdhklfhjl'#13#10'doom';
Da kommen keine '...', dafür macht diverse Zeilenumbrucke.

Code: Alles auswählen

  s:= 'kgjlhgjgljkljgklhjgkljlödfgköljdkslhjgkjnkldsnjhklgnhgklhjdlkghjkljhklgjhklhjklhöjhklfjhklfdjhklfdjhlkhjfklhjdflkhfjdhklfhjl';
 
Wenn keine Leerzeichen vorhanden sind, dann macht er am Ende '...' .

Anstelle von ShowMessage kann ich Application.MessageBox nehmen, mit dem gleichen Ergebniss.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

LazProgger
Beiträge: 63
Registriert: Di 11. Mär 2014, 00:33

Re: ShowMessage kürzt lange Dateinamen

Beitrag von LazProgger »

Also bleibt einem wohl nichts anderes übrig als einen eigenen Message-Dialog zu schreiben, der die Sache vernünftig darstellt.. :(

Mathias
Beiträge: 6912
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ShowMessage kürzt lange Dateinamen

Beitrag von Mathias »

Ich habe da noch einen Lösungsweg, welcher noch angepasst werden muss.

Code: Alles auswählen

procedure TForm1.FormShow(Sender: TObject);
var
  s: string;
begin
  s := 'C:\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Ordner\Datei.dat';
 
  Label1.Caption := s;
  Label1.Left := 30;
  Label1.Top := 30;
  ClientWidth := Label1.Width + 60;
  ClientHeight := Label1.Height + 120;
  Button1.Left := ClientWidth div 2 - Button1.Width div 2;
  Button1.Top := Label1.Top + Label1.Height + 30;
end; 
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten