Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi OpenDialog Zuweisung (https://www.delphipraxis.net/38159-opendialog-zuweisung.html)

Grolle 15. Jan 2005 15:35


OpenDialog Zuweisung
 
Wie kann ich denn mit dem OpenDialog verschiedene Files
verschiedenen SyneditFeldern zuweisen?
THX: Grolle

toms 15. Jan 2005 15:41

Re: OpenDialog Zuweisung
 
Hi,

Etwa so ähnlich (Code muss noch angepasst werden an viele Synedit Felder)
Delphi-Quellcode:
var
  i: Integer;
begin
  if OpenDialog1.Execute then
    for i := 0 to OpenDialog1.Files.Count - 1 do
      SyneditFeldX.LoadFromFile(Files[i]);

Grolle 15. Jan 2005 16:22

Re: OpenDialog Zuweisung
 
Danke für die schnelle Antwort.
Wo greife ich bei deinem Beispiel auf die
Filter zu?
Grolle

Chegga 15. Jan 2005 16:26

Re: OpenDialog Zuweisung
 
Hi,

ja einfach deine OpenDialog Kompo markieren
und dann im Objektinspektor/Eigenschaften Filter auswählen. :wink:

MfG Marc

Grolle 15. Jan 2005 17:28

Re: OpenDialog Zuweisung
 
Hi Marc!
Definiere ich dann die Files lt. dem Programmbsp. oben
durch die Variable i? Wie weiß ich welcher Filter wie zu-
geordnet ist? Fragen über Fragen :gruebel:
Thx: Grolle

Chegga 15. Jan 2005 17:34

Re: OpenDialog Zuweisung
 
Hi,

folgendes:
Hohle dir eine OpenDialog Kompo. auf das Formular.
Markiere die Kompo.
-> Im Filter z.B.:
Unter;
Filtername -> Textdateien (*.txt)
Filter -> *.txt

Damit werden nur Dateien mit der Kennung .txt angezeigt.
Das war's schon. :wink:

MfG Marc

Grolle 16. Jan 2005 18:09

Re: OpenDialog Zuweisung
 
Hi!
Also, wie ich die Filter vom OpenDialog definiere
ist mir klar. Ich möchte aber:

Wenn du eine *.pas Datei öffnest, dann in PageControl1.ActivePage := TabSheet1;
SynEdit1
wenn du eine *.cpp Datei öffnest, dann in PageControl1.ActivePage := TabSheet2;
SynEdit2
wenn du eine *.txt Datei öffnest, dann in PageControl1.ActivePage := TabSheet3;
SynEdit3
Ich weiß einfach nicht, wie ich die Zuweisung in die jeweiligen SynEdit Felder
mache.
Viele Grüße: Grolle

fkerber 16. Jan 2005 18:15

Re: OpenDialog Zuweisung
 
Hi!

Dann lass den User auswählen und schau dir dann mal Delphi-Referenz durchsuchenFileExt an


Ciao Frederic

bigg 16. Jan 2005 18:19

Re: OpenDialog Zuweisung
 
Schreib dir eine Funktion die die Dateien öffnet. :zwinker:

Grolle 19. Jan 2005 10:33

Re: OpenDialog Zuweisung
 
Ich greif das Thema nochmal auf. Ich habe jetzt folgenden Code:

Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
var
FileName: string;

begin
  OpenDialog1.Execute;
  if LowerCase(ExtractFileExt(FileName))='.htm; .html' then;
    PageControl1.ActivePage := TabSheet1;
    SynEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
  if LowerCase(ExtractFileExt(FileName))='.php; .php3; .php4; .dat' then;
    PageControl1.ActivePage := TabSheet2;
    SynEdit2.Lines.LoadFromFile(OpenDialog1.FileName);
  if LowerCase(ExtractFileExt(FileName))='.pas' then;
    PageControl1.ActivePage := TabSheet3;
    SynEdit3.Lines.LoadFromFile(OpenDialog1.FileName);
  if LowerCase(ExtractFileExt(FileName))='.h; .c; .cs; .hh; .cpp' then;
    PageControl1.ActivePage := TabSheet4;
    SynEdit4.Lines.LoadFromFile(OpenDialog1.FileName);
end;
Das File wird aber in alle SynEdits geladen. Was mache ich dagegen? :gruebel:

Grolle

Airblader 19. Jan 2005 10:36

Re: OpenDialog Zuweisung
 
Ich glaube nicht was vergessen zu haben, daher mal eine Einleitung in eine if-abfrage in delphi über mehrere zeilen

Delphi-Quellcode:
if bedingung then
begin
  irgendwas1();
  irgendwas2();
  ...
end;
du hast:

Delphi-Quellcode:
if bedingung then;
irgendwas1();
irgendwas2();
...
So erkennt delphi nicht nur, was alles in das if gehört, sondern es ist auch falsch.

ob das mit

Delphi-Quellcode:
'.htm; .html'
geht, weiß ich nicht,dazu enthalte ich mich.
aber die if() sind aus meiner sicht falsch ;)

Grolle 19. Jan 2005 10:47

Re: OpenDialog Zuweisung
 
Ja bei den If Anweisungen hast du natürlich Recht :wall:
Aber auch nach Änderung schmeißt er alles in die SynEdits
in die die Files nicht rein sollen.
Viele Grüße: Grolle

bigg 19. Jan 2005 11:32

Re: OpenDialog Zuweisung
 
Delphi-Quellcode:
procedure TForm1.Oeffnen(Sender: TObject);
var Ext: String;
begin
 
if OpenDialog1.Execute then {Wenn du auf Öffnen geklickt hast, dann....}
begin

{OpenDialog1.FileName = Kompletter Pfad zur Datei}
 
Ext := LowerCase(OpenDialog1.FileName); {Ermittle die Dateierweiterung und konvertiere sie in Kleinbuchstaben}

{dann filtern und laden, das macht sich aber in einer Schleife wesentlich besser}

end;
end;

Grolle 19. Jan 2005 11:45

Re: OpenDialog Zuweisung
 
Hallo Bigg
Zitat:

{dann filtern und laden, das macht sich aber in einer Schleife wesentlich besser}
Wie filter ich die Dateien denn in einer Schleife?
Viele Grüße: Grolle

Steve 19. Jan 2005 11:46

Re: OpenDialog Zuweisung
 
Zitat:

Zitat von Grolle
Ja bei den If Anweisungen hast du natürlich Recht :wall:
Aber auch nach Änderung schmeißt er alles in die SynEdits
in die die Files nicht rein sollen.

Hi,

vermutlich hast Du direkt hinter jedem THEN das Semikolon stehen lassen. Das heißt, dass bei erfüllter IF-Bedingung nix passiert. Der anschließende Code ist unabhängig von der IF-Bedingung.

Delphi-Quellcode:
If Bedingung=True Then // Hier KEIN Semikolon!
Begin
  MachWas();
  MachWer();
End;
Zitat:

ob das mit
Code:
'.htm; .html'
geht, weiß ich nicht,dazu enthalte ich mich.
Nein, das geht nicht. Das würde nämlich bedeuten, dass die Endung der Datei GENAU '.htm; .html' heißen muss. Du musst jede einzelne Endung prüfen:

Delphi-Quellcode:
IF (LowerCase(Endung)='.htm') OR (LowerCase(Endung)='.html') THEN ...
Gruß
Stephan :dance:

Grolle 19. Jan 2005 12:08

Re: OpenDialog Zuweisung
 
@ Steve
Funktioniert leider auch nicht. Wenn ich ; weglasse
lädt er gar nix mehr ins Program. Ich krieg die Kriseeeeeeeeee :x
Grolle

Steve 19. Jan 2005 12:14

Re: OpenDialog Zuweisung
 
Hi,

wenn Du die Prüfung ='.htm; .html' etc. gelassen hast, dann ist das vollkommen korrekt, dass er nix lädt, da die Bedingung nicht zutrifft. Wie oben beschrieben: prüfe jede einzelne Endung!

Also sowas in der Richtung:
Delphi-Quellcode:
IF (Endung='.html') OR (Endung='.htm') THEN // Ist die Endung htm oder html?
BEGIN // Nachfolgenden Code für obige Bedingung ausführen
  BlaBlubb;
END ELSE // Endung ist nicht htm oder html
IF (Endung='.c') OR (Endung='.cpp') OR (Endung='.h') THEN // Ist die Endung dann c, cpp oder h?
BEGIN // Nachfolgenden Code für obige Bedingung ausführen
  Blubber;
END ELSE // Endung ist auch nicht c, cpp oder h....
IF (Endung='.asp') THEN // Ist die Endung dann asp?
BEGIN // Nachfolgenden Code für obige Bedingung ausführen
  BliBlaBlubb;
END ELSE // Die Endung ist auch nicht asp
  ShowMessage('Das Format kann nicht dargestellt werden');

Gruß
Stephan :dance:

PS: Schau Dir für den Anfang doch mal ein paar Einsteiger-Tutorials zum Thema Delphi an :)

Grolle 19. Jan 2005 12:26

Re: OpenDialog Zuweisung
 
Hallo Steve!
Ich schick dir am Besten nochmal den Quelltext bevor
ich hier Amok laufe:
Delphi-Quellcode:
var
FileName: string;

begin
  OpenDialog1.Execute;
  if (LowerCase(FileName)='.htm') OR (LowerCase(FileName)='.html') then
  begin
    PageControl1.ActivePage := TabSheet1;
    SynEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
  end;
  if (LowerCase(FileName)='.php') or (LowerCase(FileName)='.php3')or
  (LowerCase(FileName)='.php4')or (LowerCase(FileName)='.dat') then
  begin
    PageControl1.ActivePage := TabSheet2;
    SynEdit2.Lines.LoadFromFile(OpenDialog1.FileName);
  end;
  if (LowerCase(FileName)='.pas') then
  begin
    PageControl1.ActivePage := TabSheet3;
    SynEdit3.Lines.LoadFromFile(OpenDialog1.FileName);
  end;

end;
Viele Grüße: Grolle

Steve 19. Jan 2005 12:30

Re: OpenDialog Zuweisung
 
Hi,

Du hast FileName als eigene Variable deklariert. Woher soll diese Variable denn wissen, was Du im openDialog ausgewählt hast?
Der OpenDialog hat eine Eigenschaft FileName. Die brauchst Du hier und folgendermaßen greifst Du darauf zu:

Delphi-Quellcode:
IF OpenDialog1.Execute THEN // Nachfolgender Code wird nur ausgeführt, wenn Datei im Dialog ausgewählt wurde!
BEGIN
  IF (LowerCase(OpenDialog.FileName)='.htm') OR (...) //etc.
  ELSE
  IF (LowerCase(OpenDialog.FileName)='.asp') //etc.
  ...
END;

Gruß
Stephan :dance:

Grolle 19. Jan 2005 12:45

Re: OpenDialog Zuweisung
 
Hi,
alles geändert, aber laden tut da nix. :(
Grolle

Steve 19. Jan 2005 12:57

Re: OpenDialog Zuweisung
 
Hi,

hatte da was ganz übersehen:

Du prüfst, ob der gesamte Dateiname einer bestimmten Endung entspricht. Auch das wird wohl kaum zutreffen --> Delphi-Referenz durchsuchenExtractFileExt wieder einbauen

Gruß
Stephan

Grolle 19. Jan 2005 13:13

Re: OpenDialog Zuweisung
 
Das war es!!!
1000 dank für deine Geduld. :thumb:
Cheers: Grolle


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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