![]() |
ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Hey ich sitz jetzt schon zwei tage an dem bug und ich komm nicht drauf (ist auch eine sache wo mir das internet nicht helfen kann)
und zwar gibt es den button btnSave und über den kann man eine Memo speichern, das problem ist das die erstellte datei am beispiel vorgegebenem Speichername ist text ausgewähltes dateiformat ist Text(*.txt) dann heist die datei im explorer nachher Text.txt.txt. warum ist die unit für das MainFrame
Delphi-Quellcode:
und hier die Library Unit
unit MainFrame;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, Library_U, types; type { TForm1 } TForm1 = class(TForm) Button1: TButton; //button zum probieren Edit1: TEdit; //Edit Feld zum sachen testen Edit2: TEdit; //Edit Feld zum sachen testen Image1: TImage; btnNew: TSpeedButton; btnOpen: TSpeedButton; btnSave: TSpeedButton; btnSaveAs: TSpeedButton; btnDrucken: TSpeedButton; btnFormular: TSpeedButton; Memo1: TMemo; Aktuelloffen: TMemo; Memo3: TMemo; OpenDialog: TOpenDialog; SaveDialog: TSaveDialog; btnExit: TSpeedButton; StatusBar: TStatusBar; TabCon: TTabControl; TBar: TToolBar; procedure btnExitClick(Sender: TObject); procedure btnFormularClick(Sender: TObject); procedure btnNewClick(Sender: TObject); procedure btnOpenClick(Sender: TObject); procedure btnSaveAsClick(Sender: TObject); procedure btnSaveClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormChangeBounds(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure Memo1Change(Sender: TObject); procedure TabConChange(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; //INTEGER btnbreit : integer; btnhoch : integer; tabindex01 : integer; //BOOLEAN change : boolean; // change gibt an ob der Text nach dem Speichern noch bearbeitet wurde save01 : boolean; //STRING savepath : string; // savepath ist eine zwischen Variable und den save Pfad abzuspeichern hist : string; // hist ist die variable die gebraucht wird um eine "History" also die letzte offene Datei zu begin anzuzeigen :D implementation uses FormularFrame; {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin btnbreit:=70; btnhoch:=62; change:=true; save01:=true; // Memo3 if FileExists('history')=true then begin Memo3.Lines.Delete(0); Memo3.Lines.LoadFromFile('history'); hist:=Memo3.Lines[0] + '.txt'; Edit1.Text:=hist; // Controlle end; // Memo1 if FileExists(hist)=true then begin Memo1.Lines.LoadFromFile(hist); end; Memo1.Focused; // TabCon TabCon.SetBounds(0,0,Form1.Width,42+TBar.Height); // btnNew btnNew.SetBounds(0,0,btnbreit,btnhoch); btnNew.Font.Size:=09; btnNew.Font.Name:='Calibri'; // btnOpen btnOpen.SetBounds(btnNew.BoundsRect.Right+5,0,btnbreit,btnhoch); btnOpen.Font.Size:=09; btnOpen.Font.Name:='Calibri'; // btnSave btnSave.SetBounds(btnOpen.BoundsRect.Right+5,0,btnbreit,btnhoch); btnSave.Font.Size:=09; btnSave.Font.Name:='Calibri'; // btnSaveAs btnSaveAs.SetBounds(btnSave.BoundsRect.Right+5,0,btnbreit,btnhoch); btnSaveAs.Font.Size:=08; btnSaveAs.Caption:='Sichern Unter'; btnSaveAs.Font.Name:='Calibri'; // btnDrucken btnFormat(btnDrucken,btnSaveAs.BoundsRect.Right+5,0,btnbreit,btnhoch,09,'Calibri',true); // btnFormular btnFormat(btnFormular,0,0,btnbreit,btnhoch,09,'Calibri',false); // btnExit btnFormat(btnExit,TBar.Width,0,btnbreit,btnhoch,09,'Calibri',true); btnExit.Caption:='Schließen'; // StatusBar if FileExists(hist)=true then begin StatusBar.Panels.Items[0].Text:=hist; end; end; procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin tabindex01:=TabCon.TabIndex; If (TabCon.TabIndex<2) then begin TabCon.TabIndex:=tabindex01+1; end; end; procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin tabindex01:=TabCon.TabIndex; If (TabCon.TabIndex>0) then begin TabCon.TabIndex:=tabindex01-1; end; end; procedure TForm1.Memo1Change(Sender: TObject); begin change:=true; button1.Caption:=booltostr(change); // TEST :D :D :D :D :D end; procedure TForm1.FormChangeBounds(Sender: TObject); begin TabCon.SetBounds(0,0,Form1.Width,42+TBar.Height); end; // SICHERN //btnSave procedure TForm1.btnSaveClick(Sender: TObject); begin if save01=true then begin Save(btnSave); end else begin Memo1.Lines.SaveToFile(savepath); end; Aktuelloffen.Lines.Delete(0); Aktuelloffen.Lines.Add('1'); Aktuelloffen.Lines.Text := SysToUTF8(savepath); Aktuelloffen.Lines.SaveToFile('History'); end; // ÖFFNEN //btnOpen procedure TForm1.btnOpenClick(Sender: TObject); var open : string; begin If OpenDialog.Execute then begin open:= OpenDialog.FileName; Memo1.Lines.LoadFromFile(open); Aktuelloffen.Lines.Delete(0); Aktuelloffen.Lines.Add('1'); Aktuelloffen.Lines.Text := SysToUTF8(open); Aktuelloffen.Lines.SaveToFile('History'); change:=false; end; end; procedure TForm1.btnExitClick(Sender: TObject); begin Close; end; procedure TForm1.btnFormularClick(Sender: TObject); begin Form2 := TForm2.Create(Self); Form2.ShowOnTop; //Form1.Enabled:=false; end; procedure TForm1.btnNewClick(Sender: TObject); begin Memo1.Lines.Clear; end; procedure TForm1.btnSaveAsClick(Sender: TObject); begin Save(btnSaveAs); end; procedure TForm1.Button1Click(Sender: TObject); var textb : boolean; texts : string; long, long01, i : integer; begin long:= length(Edit1.Text); textb:=false; i:=1; repeat begin texts:=copy(Edit1.Text,long,i); long:= long-1; i:=i+1; if texts[1]='\' then begin long01:= length(texts); texts:=copy(texts,2,long01-1); textb:=true; end; end; until textb=true; Edit2.Text:=texts; end; // REGISTER procedure TForm1.TabConChange(Sender: TObject); begin case TabCon.TabIndex of 0: begin btnNew.Visible:=true; btnOpen.Visible:=true; btnSave.Visible:=true; btnSaveAs.Visible:=true; btnDrucken.Visible:=true; btnFormular.Visible:=false; btnExit.SetBounds(TBar.Width,0,btnbreit,btnhoch); end; 1: begin btnNew.Visible:=false; btnOpen.Visible:=false; btnSave.Visible:=false; btnSaveAs.Visible:=false; btnDrucken.Visible:=false; btnFormular.Visible:=true; btnFormular.SetBounds(0,0,btnbreit,btnhoch); btnExit.SetBounds(TBar.Width,0,btnbreit,btnhoch); end; 2: begin { btnNew. btnOpen btnSave btnSaveAs btnDrucken btnFormular btnNewFormular btnExit } end; end; end; end.
Delphi-Quellcode:
ich bin euch für eure hilfe echt dankbar :roll:
unit Library_U;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, Buttons, Dialogs; procedure btnFormat(AButton: TSpeedButton; posx, posy, btnbreite, btnhoehe: integer; sizeint : integer; fontname : string; sichtbar: Boolean); procedure Save(Sender: TObject); implementation uses MainFrame; procedure btnFormat(AButton: TSpeedButton; posx, posy, btnbreite, btnhoehe: integer; sizeint : integer; fontname : string; sichtbar: Boolean); begin if AButton <> nil then begin AButton.SetBounds(posx,posy,btnbreite,btnhoehe); AButton.Caption := copy(AButton.Name, 4, MaxInt); AButton.Visible := sichtbar; AButton.Font.Size:=sizeint; AButton.Font.Name:=fontname; end; end; procedure Save(Sender: TObject); var textb : boolean; texts : string; long, long01, i : integer; begin case Form1.SaveDialog.FilterIndex of 2: begin if Form1.SaveDialog.Execute then begin Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog.Filename + '.docx'); savepath := Form1.SaveDialog.FileName; long:= length(Form1.SaveDialog.FileName); textb:=false; i:=1; repeat begin texts:=copy(Form1.SaveDialog.FileName,long,i); long:= long-1; i:=i+1; if texts[1]='\' then begin long01:= length(texts); texts:=copy(texts,2,long01-1); textb:=true; end; end; until textb=true; Form1.Caption:=texts; Form1.StatusBar.Panels.Items[0].Text:=Form1.SaveDialog.Filename + '.docx'; texts:=''; change:=false; save01:=false; end; end; 1: begin if Form1.SaveDialog.Execute then begin Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog.Filename + '.txt'); savepath := Form1.SaveDialog.FileName; long:= length(Form1.SaveDialog.FileName); textb:=false; i:=1; repeat begin texts:=copy(Form1.SaveDialog.FileName,long,i); long:= long-1; i:=i+1; if texts[1]='\' then begin long01:= length(texts); texts:=copy(texts,2,long01-1); textb:=true; end; end; until textb=true; Form1.Caption:=texts; Form1.StatusBar.Panels.Items[0].Text:=Form1.SaveDialog.Filename+ '.txt'; texts:=''; change:=false; save01:=false; Form1.Button1.Caption:=booltostr(change); // TEST :D : D: D: D: D: D: D: D: D end; end; end; end; end. |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Hier hängst du doch selbst explizit ein .txt an den Dateinamen ran:
Delphi-Quellcode:
Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog.Filename + '.txt');
|
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Zitat:
@alle ich sollte vielleicht noch sagen das ich grade win 7 (ich meine fast sicher 64bit) benutze |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Dann schau Dir doch einfach den Inhalt der FileName-Eigenschaft im Debugger an. Was siehst Du?
Und wenn Du verschiedene Fälle wie z.B. eine nicht angegebene Extension unterschiedlich behandeln willst, dann musst Du das halt programmieren. :wall: |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Statt die Erweiterung stumpf dranzuhängen nimmt man auch
![]()
Delphi-Quellcode:
Jetzt hat der Dateiname gesichert die Erweiterung ".txt", egal ob da vorher eine andere Erweiterung war oder nicht ;)MyFilename := ChangeFileExtension( MyFilename, '.txt' ); |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Zitat:
|
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Zitat:
:thumb: hammer :thumb: vielen vielen dank |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Obwohl genau für Dein Problem genau die Eigenschaft DefaultExt des Savedialogs da ist
|
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
also sieht des dann zum beispiel so aus
Delphi-Quellcode:
vielen dank dafür
saveDialog.DefaultExt := 'txt';
|
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
BTW, für deinen Algo in Button1Click gibt’s ExtractFileName (könnte man dann auch gleich mit Edit1Change verknüpfen?)
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin Edit2.Text := ExtractFileName(Edit1.Text); end; |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Danke, aber der Button ist ein Witz Button der ist für nix da
|
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
(das ist komisch)
bei Windows XP funktioniert das Speichern einwandfrei, nur bei Windows 7 macht es (die SaveFunktion) zusätzlich noch ein .txt dran. |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Also Du hast da ein Rätsel?
Ich könnte mir denken wie mein Sourcecode aussehen würde wenn ich an Deiner Stelle gewesen wäre. War ich aber nicht! Und wenn ich in Deinem Code zweimal ein
Delphi-Quellcode:
finde, dann kann ich nur mit den Schulern zucken, denn Hellsehen kann ich nicht.
.SavetoFile
Also zeig noch einmal was Du hast,(lies es Dir vorher noch einmal durch) und dann sehen wir weiter. Gruß K-H |
AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)
es gibt einen button, btnSave, über den kann man eine Memo speichern, das Problem ist, das die erstellte Datei, bei zum beispiel vorgegebenem Speichername 'Text', das ausgewähltes dateiformat ist Text(*.txt), dann heißt die datei im WINDOWS Explorer nachher Text.txt.txt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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