AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit nem OpenDialog ^^

Ein Thema von KochFolie · begonnen am 6. Sep 2003 · letzter Beitrag vom 7. Sep 2003
Antwort Antwort
KochFolie

Registriert seit: 6. Sep 2003
Ort: wuppertal
16 Beiträge
 
#1

Problem mit nem OpenDialog ^^

  Alt 6. Sep 2003, 23:28
Hi,
ich möchte gerne per OpenDialog eine Datei öffnen und dann den dateinamen benutzen etwas verunstalten und in eine ähnlich heissende datei wieder reinschreiben und die dann speichern
aber egal, denn das klappt
nur wenn man im OD auf abbrechen klickt, speichert der in der zuletzt gespeicherten datei anstelle vom alten dateinamen gar nichts ab...
hm... http://dlz.kochfolie.de?file=4 bitte mal ausprobieren...
ich glaub das da oben versteht eh keiner *g*, kann net erklären naja

also noch ein versuch *g*
man klickt auf öffnen, dann kommt if opendialog.execute then und so weiter, mein programm macht nu den pfad weg, und ändert beim namen mit pfad die extension... dann speichert er die neue datei mit pfad und schreibt da sozusagen den alten dateinamen ohne pfad rein...
soweit ok, wenn man das nochmal und nochmal macht wirds immer wieder klappen, nur wenn man auf abbrechen drückt, speichert er in die alte datei einen leeren dateinamen...
ich glaub das versteht man besser :/
kann mir jemand helfen?

den code stell ich auch mal hier rein....

Code:
procedure TForm1.ffnen1Click(Sender: TObject);
var dateiname,dateiname2,dateiname3,dateinamemitpfad,dateinamemitpfad3:string;
    datei:textfile;
begin
try
if open.execute then dateiname:=extractfilename(Open.Filename);
assignfile(datei, ChangeFileExt(open.filename,'.cue'));
rewrite(datei);
write(datei, 'FILE "');
write(datei, dateiname);
writeln(datei, '" BINARY');
writeln(datei, ' TRACK 01 MODE1/2352');
write(datei,  '   INDEX 01 00:00:00');
flush(datei);
closefile(datei);
if deutsch1.checked
  then label3.caption:='Datei erfolgreich gespeichert als:'
  else label3.caption:='File successfully saved as';
dateiname2:=ChangeFileExt(Open.Filename,'.cue');
label4.caption:=dateiname2;
except
error:=true;
if deutsch1.checked
  then begin label3.caption:='Fehler aufgetreten... bitte sende eine e-mail mit einer beschreibung';
             label4.Caption:='von dem was du grad gemacht hast an [email]KochFolie@web.de[/email]';
       end
  else begin label3.caption:='Error accured... please send an e-mail with a little error report';
             label4.caption:='of your actions in it to [email]KochFolie@web.de[/email] (I know my english ;-)';
       end;
end;
if label3.width<label4.width
  then form1.Width:=label4.width+10
  else form1.Width:=label3.width+10;
form1.height:=130;
dateiname3:=dateiname;
dateinamemitpfad3:=dateinamemitpfad;
end;
ich hab (zu?)viele variablen is aber egal das säuber ich nachher noch...erstmal solls funktionieren

falls wer mein problem noch nich kapiert hat ich möchte entweder den abbrechen button im OpenDialog deaktivieren (nicht gut) oder ich möchte verhindern dass ein leerer wert in die alte datei geschrieben wird!

danke schonmal
mfg - ich :p
- gefürchteter edit-button-user
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit nem OpenDialog ^^

  Alt 7. Sep 2003, 00:02
Moin KochFolie,

erst einmal herzlich Willkommen hier in der Delphi-PRAXiS.

Zitat von KochFolie:
nur wenn man im OD auf abbrechen klickt, speichert der in der zuletzt gespeicherten datei anstelle vom alten dateinamen gar nichts ab...
Da hast Du sogar Glück gehabt.
Dateiname ist eine lokale Variable, deren Wert zu Beginn der Prozedur unbestimmt ist, und nur gesetzt wird, wenn Du beim OpenDialog nicht auf Abbrechen klickst.

Ich sehe da zwei Möglichkeiten:
  1. Soll die Prozedur auch ausgeführt werden, wenn auf "Abbrechen" geklickt wird, muss Dateiname als globale Variable, oder als Feld von TForm1 (oder einem anderen Objekt) deklariert werden. Vielleicht noch besser wäre es
  2. bei Abbruch die Prozedure gar nicht erst auszuführen. Die Execute Methode prüfst Du ja sowieso auf Abbruch oder nicht ab. Ansonsten müsste sichergestellt werden, dass beim ersten Aufruf der Prozedur nicht abgebrochen werden kann, oder dass Dateiname initialisiert ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
KochFolie

Registriert seit: 6. Sep 2003
Ort: wuppertal
16 Beiträge
 
#3

Re: Problem mit nem OpenDialog ^^

  Alt 7. Sep 2003, 00:16
hehe irgendwie hab ichs hingekriegt
hab das try rausgenommen und alles mit if eingeklammert irgendwie läufts jetzt danke
Zitat:
bei Abbruch die Prozedure gar nicht erst auszuführen. Die Execute Methode prüfst Du ja sowieso auf Abbruch oder nicht ab. Ansonsten müsste sichergestellt werden, dass beim ersten Aufruf der Prozedur nicht abgebrochen werden kann, oder dass Dateiname initialisiert ist.
dafür

oh und danke an marco unter mir, dadurch ist es noch kürzer geworden... da hatte ich das begin echt vergessen ich nuss :S danke

Code:
procedure TForm1.ffnen1Click(Sender: TObject);
var dateiname,dateiname2,dateiname3,dateinamemitpfad,dateinamemitpfad3:string;
    datei:textfile;
begin
if open.execute then begin
dateiname:=extractfilename(Open.Filename);
assignfile(datei, ChangeFileExt(open.filename,'.cue'));
rewrite(datei);
write(datei, 'FILE "');
write(datei, dateiname);
writeln(datei, '" BINARY');
writeln(datei, ' TRACK 01 MODE1/2352');
write(datei,  '   INDEX 01 00:00:00');
flush(datei);
closefile(datei);
if deutsch1.checked
  then label3.caption:='Datei erfolgreich gespeichert als:'
  else label3.caption:='File successfully saved as';
dateiname2:=ChangeFileExt(Open.Filename,'.cue');
label4.caption:=dateiname2;
if label3.width<label4.width
  then form1.Width:=label4.width+10
  else form1.Width:=label3.width+10;
form1.height:=130;
dateiname3:=dateiname;
dateinamemitpfad3:=dateinamemitpfad;
end;
end;
mfg - ich :p
- gefürchteter edit-button-user
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#4

Re: Problem mit nem OpenDialog ^^

  Alt 7. Sep 2003, 00:17
Zitat von KochFolie:
Delphi-Quellcode:
if open.execute then dateiname:=extractfilename(Open.Filename);
assignfile(datei, ChangeFileExt(open.filename,'.cue'));
Mit if open.execute then überprüftst Du, ob im OpenDialog auf Öffnen geklickt wurde und nur das geschehen ist, wird Dateiname zugewiesen. Die nächste Zeile assignfile wird aber immer ausgeführt, egal was im OpenDialog getan wurde.
Wenn Du hinter if open.execute then ein begin setzt (end; nicht vergessen) wird alles nur dann ausgeführt, wenn Du den Dialog mit Öffnen bestätigst.

Delphi-Quellcode:
begin
  if open.execute then
  begin
    dateiname:=extractfilename(Open.Filename);
    assignfile(datei, ChangeFileExt(open.filename,'.cue'));
    ...
  end;
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Problem mit nem OpenDialog ^^

  Alt 7. Sep 2003, 00:20
Moin Kochfolie,

Delphi-Quellcode:
dateiname:='xyz123987zyx5321abgebrochenblubblub';
if open.execute then dateiname:=extractfilename(Open.Filename);
if dateiname<>'xyz123987zyx5321abgebrochenblubblubthen begin
und warum nicht, in Anlehnung an Marcos Vorschlag so:

Delphi-Quellcode:
if not open.execute then exit;
dateiname:=extractfilename(Open.Filename);
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
KochFolie

Registriert seit: 6. Sep 2003
Ort: wuppertal
16 Beiträge
 
#6

Re: Problem mit nem OpenDialog ^^

  Alt 7. Sep 2003, 00:25
jetzt hab ich mich noch verlesen *alles um-editier* ^^
danke für die hilfe ihr
mfg - ich :p
- gefürchteter edit-button-user
  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 15:15 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