Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren (https://www.delphipraxis.net/188121-rechnung-mit-sonderzeichen-rechnung-ohne-sonderzeichen-konvertieren.html)

Phillip0405 2. Feb 2016 14:03

Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Hallo zusammen,
ich wollte ein Programm programmieren, dass eine Rechnung mit Sonderzeichen in eine Rechnung ohne Sonderzeichen konvertiert.
Delphi-Quellcode:
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Inifiles;

type
  TForm5 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    function Löschen(text:string;alt:string): string;

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
var
sl:tstringlist;
MyInifile: TInifile;
sFile,a,test:string;
i:integer;
begin
MyIniFile:= TInifile.Create('C:\Users\Praktikant\Desktop\Phillip Beermann, Praktikant\`Rechnung´\MyConfig.ini');
sFile:= MyIniFile.ReadString('Verzeichnis','Quelle','Irgendetwas ist falsch!');
sl:=tstringlist.Create;
sl.LoadFromFile(sfile);
    for i:= 0  to sl.Count -1 do begin
      sfile:=Löschen(sFile,'\A+');
      sfile:=Löschen(sFile,'\A-');
      sfile:=Löschen(sFile,'\S+');
      sfile:=Löschen(sFile,'\S-');
      sfile:=Löschen(sFile,'\U+');
      sfile:=Löschen(sFile,'\U-');
    end;
a:=MyIniFile.ReadString('Verzeichnis','Ziel','');
sl.SaveToFile(a);
MyIniFile.Free;
sl.Free;
end;

 function TForm5.Löschen(text:string;alt:string): string;
  var
  b,a :integer;
 begin
  b:=Pos(alt,text);
  a:=length(alt);
  while b>0 do begin
   text:=copy(text,b,a);
   Delete(text,b,a);
   b:=Pos(alt,text);
  end;
  result := Text;

end;
end.
Nur bleibt die Rechnung so wie sie war. Was ist falsch?
Danke im Voraus!:thumb:

vagtler 2. Feb 2016 14:06

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Na, weil Du den Dateinamen und nicht den gelesenen Inhalt bearbeitest...

Phillip0405 2. Feb 2016 14:07

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Zitat:

Zitat von vagtler (Beitrag 1329088)
Na, weil Du den Dateinamen und nicht den gelesenen Inhalt bearbeitest...

Wie kann ich es ändern?

nahpets 2. Feb 2016 14:09

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
sFile ist doch der Dateiname, wenn Du den änderst, ändert sich nicht der Inhalt der Datei.

Delphi-Quellcode:
  for i:= 0 to sl.Count -1 do begin
      sl[i]:=Löschen(sl[i],'\A+');
      sl[i]:=Löschen(sl[i],'\A-');
      sl[i]:=Löschen(sl[i],'\S+');
      sl[i]:=Löschen(sl[i],'\S-');
      sl[i]:=Löschen(sl[i],'\U+');
      sl[i]:=Löschen(sl[i],'\U-');
    end;
könnte das Problem lösen helfen ;-)

Phillip0405 2. Feb 2016 14:14

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Zitat:

Zitat von nahpets (Beitrag 1329090)
sFile ist doch der Dateiname, wenn Du den änderst, ändert sich nicht der Inhalt der Datei.

Delphi-Quellcode:
  for i:= 0 to sl.Count -1 do begin
      sl[i]:=Löschen(sl[i],'\A+');
      sl[i]:=Löschen(sl[i],'\A-');
      sl[i]:=Löschen(sl[i],'\S+');
      sl[i]:=Löschen(sl[i],'\S-');
      sl[i]:=Löschen(sl[i],'\U+');
      sl[i]:=Löschen(sl[i],'\U-');
    end;
könnte das Problem lösen helfen ;-)

Wie kann ich es ändern, dass der Text, der sich hinter der Datei des Pfades verbirgt, sich ändert?
Aber schon mal danke ;-)

p80286 2. Feb 2016 14:23

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Delphi-Quellcode:
   sl.Text:=Löschen(sl.Text,'\A+');
   sl.Text:=Löschen(sl.Text,'\A-');
   sl.Text:=Löschen(sl.Text,'\S+');
   sl.Text:=Löschen(sl.Text,'\S-');
   sl.Text:=Löschen(sl.Text,'\U+');
   sl.text:=Löschen(sl.Text,'\U-');
  ;
wäre eine weitere Möglichkeit.

Gruß
K-H

P.S.
Zitat:

Zitat von Phillip0405 (Beitrag 1329092)
Wie kann ich es ändern, dass der Text, der sich hinter der Datei des Pfades verbirgt, sich ändert?

Könntest Du bitte noch einmal erklären um was es Dir geht?

Phillip0405 2. Feb 2016 14:38

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Ich habe eine Rechnung. Diese Rechnung hat bestimmte Zeichen (\A+ \A- \S+ \S- \U+ \U- )die entfernt werden sollen. Dieses soll durch eine ini-Datei "gesteuert" werden.
Zitat:

Zitat von p80286 (Beitrag 1329096)
Delphi-Quellcode:
   sl.Text:=Löschen(sl.Text,'\A+');
   sl.Text:=Löschen(sl.Text,'\A-');
   sl.Text:=Löschen(sl.Text,'\S+');
   sl.Text:=Löschen(sl.Text,'\S-');
   sl.Text:=Löschen(sl.Text,'\U+');
   sl.text:=Löschen(sl.Text,'\U-');
  ;

Das sorgt dafür, dass alles entfernt wird aus der Datei.

nahpets 2. Feb 2016 14:57

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Dann schau Dir doch mal Deine Löschroutine an und analysiere, was sie macht:
Delphi-Quellcode:
function TForm5.Löschen(text:string;alt:string): string;
  var
  b,a :integer;
 begin
  b:=Pos(alt,text); // Wo ist die zu löschende Zeichenfolge?
  a:=length(alt); // und wie lang ist sie?
  while b>0 do begin // Ist sie überhaupt vorhanden?
   text:=copy(text,b,a); // Text ist alles, ab der Fundstelle, alles was davor ist, geht "verloren".
   Delete(text,b,a); // Im Rest löschen wir jetzt ab der Position im Ursprung soviel Zeichen, wie die Zeichenfolge lang ist. Allerdings hat sich die Postition durch das Entfernen des Anfangs verschoben. Hier löschen wird also irgendwo irgendwas.
   b:=Pos(alt,text); // Position der Zeichenfolge im Rest suchen.
  end;
  result := Text; // Wenn denn was übrigbleiben sollte, geben wir das zurück.

end;
Um Fehler in 'ner eigenen Routine zu vermeiden, würd' ich mich auf vorhandene Routinen von Delphi verlassen:
Delphi-Quellcode:
sl.Text := AnsiReplaceText(sl.Text,'\A+','');
sl.Text := AnsiReplaceText(sl.Text,'\A-','');
sl.Text := AnsiReplaceText(sl.Text,'\S+','');
sl.Text := AnsiReplaceText(sl.Text,'\S-','');
sl.Text := AnsiReplaceText(sl.Text,'\U+','');
sl.Text := AnsiReplaceText(sl.Text,'\U-','');

Phillip0405 2. Feb 2016 15:28

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Zitat:

Zitat von nahpets (Beitrag 1329105)
Dann schau Dir doch mal Deine Löschroutine an und analysiere, was sie macht:
Delphi-Quellcode:
function TForm5.Löschen(text:string;alt:string): string;
  var
  b,a :integer;
 begin
  b:=Pos(alt,text); // Wo ist die zu löschende Zeichenfolge?
  a:=length(alt); // und wie lang ist sie?
  while b>0 do begin // Ist sie überhaupt vorhanden?
   text:=copy(text,b,a); // Text ist alles, ab der Fundstelle, alles was davor ist, geht "verloren".
   Delete(text,b,a); // Im Rest löschen wir jetzt ab der Position im Ursprung soviel Zeichen, wie die Zeichenfolge lang ist. Allerdings hat sich die Postition durch das Entfernen des Anfangs verschoben. Hier löschen wird also irgendwo irgendwas.
   b:=Pos(alt,text); // Position der Zeichenfolge im Rest suchen.
  end;
  result := Text; // Wenn denn was übrigbleiben sollte, geben wir das zurück.

end;
Um Fehler in 'ner eigenen Routine zu vermeiden, würd' ich mich auf vorhandene Routinen von Delphi verlassen:
Delphi-Quellcode:
sl.Text := AnsiReplaceText(sl.Text,'\A+','');
sl.Text := AnsiReplaceText(sl.Text,'\A-','');
sl.Text := AnsiReplaceText(sl.Text,'\S+','');
sl.Text := AnsiReplaceText(sl.Text,'\S-','');
sl.Text := AnsiReplaceText(sl.Text,'\U+','');
sl.Text := AnsiReplaceText(sl.Text,'\U-','');

Das klappt leider auch nicht.

nahpets 2. Feb 2016 15:30

AW: Rechnung mit Sonderzeichen in Rechnung ohne Sonderzeichen konvertieren
 
Zitat:

Zitat von Phillip0405 (Beitrag 1329108)
Das klappt leider auch nicht.

Könntest Du das bitte präzisieren?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.
Seite 1 von 2  1 2      

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