Autor Beitrag
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 24.01.03 00:37 
Hallo,

ich habe in einer Kylix 3 Anwendung einen Dialog zur eingabe von Datei oder Verzeichnisnamen gestaltet. Diesen möchte ich in einer Execute Methode initialisieren und ausführen. Diese sieht so aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function TdlgDirFileName.Execute(Titel, Msg, DefValue: STRING;
  FileType: tDirFileInput): STRING;
begin
  Caption := Titel;
  lbl_caption.Caption := Msg;
  fe_Data.Text := DefValue;
  fFormat := FileType;
  IF (Self.ShowModal = mrOk) THEN
    Result := fe_Data.Text
  ELSE
    Result := '';
end; // Execute

Das Probem ist, das er bei der Zeile
ausblenden Quelltext
1:
IF (Self.ShowModal = mrOk) THEN					

sofort in den ELSE Zweig springt, ohne das der Dialog angezeigt wird. Ich habe versucht einen Breakpoint in der Funktion ShowModal in der QForms (oder war es QDialogs?) zu setzen, dies war aber nciht möglich, da der Linke diese scheinbar komplett rausgeschmissen hat.

Hat jemand eine Idee, wie ich Kylix dazu bringe sich da netter zu verhalten?

Gruß
Klabautermann
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Fr 24.01.03 22:02 
Ich kann da kein Problem sehen. Mit Kylix 3 OE funktioniert es ohne Probleme. Setzt du vielleicht irgendwo ModalResult auf einen Wert <> mrNone, z.B. in OnShow?

Das du den ShowModal Code nicht debuggen kannst, liegt daran, dass er ohne Debuginformationen kompiliert ist.

_________________
Ist Zeit wirklich Geld?
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 25.01.03 00:30 
Hallo,

nein ich ändere Modal result nirgends außer mit den Ok bzw. Abbrechen Knopf.
Selbst wenn, wird der Wert in der ersten Zeile von ShowModal ja wieder auf mrNone gesetzt. Aber da geht er ja scheinbar nicht mal rein :(. Schießlich schmeißt der Debugger die Fnktion raus :crying:.

Danke für die Idee, wenn du noch eine hast, dann immer her damit.

Klabautermann
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Sa 25.01.03 19:28 
Hast du es schon mit einer leeren Anwendung probiert? Ich kann diesen Fehler nicht nachvollziehen. Bei mit wird ShowModal immer aufgerufen und das Formuar angezeigt.

_________________
Ist Zeit wirklich Geld?
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 25.01.03 20:53 
Hallo,

also ich habe grade eine kleine versuchsreihe abgeschlossen:

1. Neues Projekt mit zei fenstern, Butten im Fenster 1 Öffnet Fenster 2 Modal. - Funktioniert.
2. Neuer Dialog im alten Projekt Knopfdruck öffnet diesen Moda.l - Funktioniert.
3. Alle Componenten und der Komplete Code aus defekten Dialog wird in den neuen Kopiert (nicht neu getippt oder sowas). Vom neuen Dialog wird die nun vorhandene Execute Methode aufgerufen. - Funktioniert.
4. Defekter Dialog wird auf dem Projekt und von der Festplatte entfernt und der neue wird entsprechend umbenannt und gespeichert. Nun wird er über die fur den Alten Dialog entwickelte Aufrufmethode bedient. - Fuktioniert.

Die Frage die bleibt ist Warum? Scheinbar hat mich da eine dieser netten Kinderkrankheiten geärgert. Erklären kann ich es mir nicht, aber jetzt funktioniert es, ohne das ich am Code ansich etwas verändert hätte. Ich habe nur den Dialog "kopiert".

Erklähren kann ich es mir nicht aber danke für die Hilfe. Immerhin hast du mich zu Experiment 1 ermuntert und die anderen wahren nur eine logische Folge.

Gruß
Klabautermann
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Sa 25.01.03 21:07 
Vielleicht hattest du 2 dpu bzw. dcu Dateien auf der Platte und Kylix hat immer in die eine kompiliert, die andere jedoch verwendet.

_________________
Ist Zeit wirklich Geld?
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: So 26.01.03 01:07 
Hallo,

glaube ich kaum, wo hätte die zweite herkommen sollen. Denn ich verwende immer lange, aussagekräftige namen, die mit einem u (für Unit) beginnen.
Eine zweite Unit uDlgDirFileName würde mich überraschen (bei gelegenheit muss ich mal die Platte [anderer Rechner] nach dem Namen durchsuchen).
Außerdem müsste die Kopie ja jetzt auch noch vorhanden sein.
Auch habe ich das ausgabeverzeichnis für DCUs nicht geändert, so das ich auch eine zweite selbstgemachte ausschließen kann.

Gruß
Klabautermann
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: So 26.01.03 12:50 
Wenn Du das ganze von einem Verzeichnis ins andere kopierst könntest Du Probleme kriegen. Z.B. Auch wenns vorher eine Delphi-Anwendung war. In der Projekt-Datei werden nämlich die verwendeten Units mit KOMPLETTEM Pfad gespeichert. Da hab ich schon einige Überraschungen erlebt.

Und genau das könnte auch die Erklärung dafür sein, dass nach dem Versuch funktioniert hat. Da hast Du ja ne neue Unit angelegt? Dann die alte rausgeschmissen? Dann isses nämlich klar....

is eignetlich keine Kinderkrankheit, aber mir wärs lieber gewesen, die würden den relativen Pfad speichern, statt dem absoluten :(

Gruß
Klabautermann Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: So 26.01.03 13:50 
Hallo,
UGrohne hat folgendes geschrieben:
Wenn Du das ganze von einem Verzeichnis ins andere kopierst könntest Du Probleme kriegen. Z.B. Auch wenns vorher eine Delphi-Anwendung war. In der Projekt-Datei werden nämlich die verwendeten Units mit KOMPLETTEM Pfad gespeichert. Da hab ich schon einige Überraschungen erlebt.

auch das kann ich ausschließen. Bei dem Projekt handelt es sich um ein Experiment, das mir die Unterschide zwischen Kylix und Delphi klar machen soll. Deshalb habe ich mich für einen Datei-Commander enschieden, denn im Dateihandling erwarte ich dieser viele. Das Projekt selbst habe ich zwar schon vor einer weile begonnen (muss so März/April gewesen sein) und dann brach liegen lassen, als ich dieses Donnerstag wieder aufgenommen habe, war eines der ersten Dinge die ich gemacht habe, dieser Verzeichnis/Dateinamen Dialog (in einer noch recht schlichten Variante) als es dann daran ging ihn zu Testen erlebte ich die oben beschriebene Überaschung.

Das Projekt wurde also unter Linux, für Linux in dem Verzeichnis in dem es auch jetzt noch liegt erstellt. für den neuen Dialog habe ich allerdings noch ein unterverzeichnis ./dialogs erstellt, in dem jetzt auch die neue Ausgabe liegt.

Ich finde das ganze sehr misteriös.
Desonders, das der Linker die ShowModal Implementierung (in der Standartunit) wegoptimiert hat, also von anfang an festellte, das diese nie erreicht werden kann. Diese aber jetzt mit dem neuen Dialog brav abarbeitet.

Gruß
Klabautermann

PS: Relative Pfade würde ich auch begrüßen, schließlich gibt es diese in Delphi Projekten ja auch.