AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) ich hab eine art Rätsel (.txt wird zweimal angezeigt)
Thema durchsuchen
Ansicht
Themen-Optionen

ich hab eine art Rätsel (.txt wird zweimal angezeigt)

Ein Thema von Finki · begonnen am 8. Aug 2013 · letzter Beitrag vom 9. Aug 2013
Antwort Antwort
Seite 1 von 2  1 2      
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#1

ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 06:55
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:
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.
und hier die Library Unit

Delphi-Quellcode:
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.
ich bin euch für eure hilfe echt dankbar
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#2

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 07:10
Hier hängst du doch selbst explizit ein .txt an den Dateinamen ran:

Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog.Filename + '.txt');
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#3

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 07:38
Hier hängst du doch selbst explizit ein .txt an den Dateinamen ran:

Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog.Filename + '.txt');
ja aber des ist weil man in des speichereingabe feld nur hallo rein schreibt und nicht hallo.txt des wegen brauch ich doch des .txt (oder?)

@alle ich sollte vielleicht noch sagen das ich grade win 7 (ich meine fast sicher 64bit) benutze
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#4

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 07:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 07:48
Statt die Erweiterung stumpf dranzuhängen nimmt man auch Delphi-Referenz durchsuchenChangeFileExtension

Delphi-Quellcode:

MyFilename := ChangeFileExtension( MyFilename, '.txt' );
Jetzt hat der Dateiname gesichert die Erweiterung ".txt", egal ob da vorher eine andere Erweiterung war oder nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#6

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 07:50
Und wenn Du verschiedene Fälle wie z.B. eine nicht angegebene Extension unterschiedlich behandeln willst, dann musst Du das halt programmieren.
Reicht das nicht wenn ich des im Objekt inspektor bei dem Savedialog bei filter angebe????
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#7

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 07:51
Statt die Erweiterung stumpf dranzuhängen nimmt man auch Delphi-Referenz durchsuchenChangeFileExtension

Delphi-Quellcode:

MyFilename := ChangeFileExtension( MyFilename, '.txt' );
Jetzt hat der Dateiname gesichert die Erweiterung ".txt", egal ob da vorher eine andere Erweiterung war oder nicht

hammer

vielen vielen dank
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
571 Beiträge
 
Delphi XE2 Professional
 
#8

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 09:31
Obwohl genau für Dein Problem genau die Eigenschaft DefaultExt des Savedialogs da ist
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#9

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 09:43
also sieht des dann zum beispiel so aus  saveDialog.DefaultExt := 'txt'; vielen dank dafür
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: ich hab eine art Rätsel (.txt wird zweimal angezeigt)

  Alt 8. Aug 2013, 13:40
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:31 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