AGB  ·  Datenschutz  ·  Impressum  







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

Fastreport eine Textdatei laden

Ein Thema von Kostas · begonnen am 4. Mär 2014 · letzter Beitrag vom 5. Mär 2014
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 19:53
Hallo Zusammen,

unter Delphi5 konnte ich mit FastReport4 zur Laufzeit eine Textdatei in ein MemoView laden.
Die Textdatei enthält wirklich planen Text.

Exakt das gleiche funktioniert unter Delphi XE2 nicht mehr. Vermutlich wegen Unicode.
Schaue ich mir das Textfile mit Notepad an, ist alles in Ordnung. Lade ich den gleichen Text
in ein MemoView wie unten angezeigt, so sehe ich Chinesische Schriftzeichen.
Hat jemand eine Idee wie ich das umgehen kann?


Delphi-Quellcode:
procedure TfrmReport.frxReport1BeginDoc(Sender: TObject);
begin
  inherited;
  case aReportFormular of
    rfSEPALastschriftProtokoll: SetTextFileInMemoView('TextDatei',PrgPath+'\SEPA\ErgebnisLast.txt');
  end;
end;


{--------------------------------------------------------------------}
{}procedure TfrmReport.SetTextFileInMemoView(ObjectName,Datei:String);
{--------------------------------------------------------------------}
begin
  with TfrxMemoView(frxreport1.findobject( ObjectName )) do
  begin
    if FileExists(Datei) then
    begin
      Visible := true;
      Memo.clear;
      Memo.LoadFromFile(Datei);
    end;{if}
  end;{with}
end;{SetTextFileInMemoView}
Gruß Kostas
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 19:58
Sorry, habe die Lösung gefunden.

Den Text einfach vorher in ein TStringList laden dann gehts.

Delphi-Quellcode:
{--------------------------------------------------------------------}
{}procedure TfrmReport.SetTextFileInMemoView(ObjectName,Datei:String);
{--------------------------------------------------------------------}
var st:TStringList;
begin
  with TfrxMemoView(frxreport1.findobject( ObjectName )) do
  begin
    if FileExists(Datei) then
    begin
      Visible := true;
      st:=TStringList.Create;
      st.LoadFromFile(Datei);
      Memo.clear;
      Memo.Assign(st);
      st.Free;
    end;{if}
  end;{with}
end;{SetTextFileInMemoView}
Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 21:00
Das Memo.Clear kannst du dir übrigens schenken.
Und noch eine kleine Anmerkung zu deinem Kommentarstil.
Diese Kommentarlinien verbrauchen nur Zeit beim Tippen und bei jeder Änderung der Agumente bist du wieder dabei nutzlose Zeilen zu editieren.
Verwende diese Zeit lieber dazu ganz am Anfang der Unit mit wenigen Zeilen zu beschreiben worum es in der Unit geht.
Kommentierte End-Zeilen wie z.B. end; {with} sind ebenfalls Zeitverschwendung.
Besser man sorgt dafür dass Funktionen so klein sind dass man diese Hilfestellung nicht braucht.
Immer prüfen, ob man eine Funktion nicht zerlegen kann und Teile davon in weitere Funktionen auslagern kann.

Und noch ein Hinweis:
ich werde hier nicht weiter darüber diskutieren wie man Sourcecode kommentieren sollte.
Das führt nur zu langwierigen und fruchtlosen Diskussionen.
Ich gebe nur meine langjährigen Erfahrungen weiter und man kann diese annehmen oder auch nicht.
Vielleicht sind die Kommentarlinien auch von jemand anderem vorgegeben worden; ich weiß es nicht.
Meiner Erfahrung behindert es mehr als es bringt.


Delphi-Quellcode:
// lade Dateiinhalt in ein Memoview des Reports
procedure TfrmReport.SetTextFileInMemoView(const MemoName,Dateiname:String);
var
  st:TStringList;
begin
  with TfrxMemoView(frxreport1.FindObject( MemoName )) do
  begin
    if FileExists(Dateiname) then
    begin
      st:=TStringList.Create;
      try
        st.LoadFromFile(Datei);
        Memo.Assign(st);
      finally
        st.Free;
      end;
      Visible := true;
    end;
  end;
end;
fork me on Github
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 22:03
Dankeschön für den Hinweis.
Das mit den Kommentaren ist so eine dumme Gewohnheit. Ich mache das so automatisch das ich es nicht merke.
In der Zeit überlege ich völlig andere Dinge.
Das mit dem try finally ist natürlich Pflicht und hatte ich auch eingebaut. Ich wollte nur schnell posten damit
sich niemand unnötig mit dem Thread beschäftigt.

Nochmals herzlichen Dank für den Hinweis ich weis das sehr zu schätzen.
Dir noch eine schöne Zeit.

Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 22:14
Wirklich Memo.LoadFromFile(Datei); und nicht Memo.Lines.LoadFromFile(Datei);


Hat da vielleicht jemand bei FastReport ein bissl "Mist" gebaut? (Fehlplanung)
(abgesehn davon, daß ein WideString nicht grade ein "optimales" Speichermanagement besitzt)


Zitat:
Delphi-Quellcode:
procedure TWideStrings.SaveToStream(Stream: TStream; Encoding: TEncoding);
var
  Buffer, Preamble: TBytes;
begin
  if Encoding = nil then
    Encoding := TEncoding.Unicode; // The default encoding is UTF-16
FastReport nutzt TWideStrings und nicht TStrings.
TWideStrings verwendet per Default Unicode und nicht ANSI, so wie das TStrings.

Resultat: Der Code ist nicht kompatibel. (oder hatten sie die Dateien vor D2009 wirklich schon als UTF-16 gespeichert?)

Lösung: Memo.LoadFromFile(Datei, TEncoding.Default);


[edit]
OMG, das Property "Memo" ist das "Lines" ... also intuitiv ist was Anderes
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Mär 2014 um 09:12 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 22:19
Und noch ein Hinweis: ich werde hier nicht weiter darüber diskutieren wie man Sourcecode kommentieren sollte. Das führt nur zu langwierigen und fruchtlosen Diskussionen. Ich gebe nur meine langjährigen Erfahrungen weiter und man kann diese annehmen oder auch nicht. Vielleicht sind die Kommentarlinien auch von jemand anderem vorgegeben worden; ich weiß es nicht. Meiner Erfahrung behindert es mehr als es bringt.
Liest sich wie: "Wenn hier jemand was über Kommentierung schreibt, dann ich und sonst keiner. Ich verbiete jedem anderen, diese Kommentierungsratschläge zu hinterfragen oder sonstwie zu kritisieren."

Was mich aber nicht abhalten wird, denn du hast hier nichts zu verbieten: Bei größeren verschachtelten Strukturen ist es allemal besser, das Ende eines Blocks zu kommentieren, als hinterher mühevoll hoch- und runterscrollen zu müssen, wenn man das Ende eines Blocks sucht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 22:25
Kommentierung hin und her ...

Das Einzige, was ich wirklich an dem Code hätte auszusetzen, ist der fehlende Resourcenschutzblock (Try-Finally)


Und ja, Assign macht intern quasi auch nochmal ein Clear, aber doppelt hält ja bekanntlich besser.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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
 
#8

AW: Fastreport eine Textdatei laden

  Alt 4. Mär 2014, 23:48
Und noch ein Hinweis: ich werde hier nicht weiter darüber diskutieren wie man Sourcecode kommentieren sollte. Das führt nur zu langwierigen und fruchtlosen Diskussionen. Ich gebe nur meine langjährigen Erfahrungen weiter und man kann diese annehmen oder auch nicht. Vielleicht sind die Kommentarlinien auch von jemand anderem vorgegeben worden; ich weiß es nicht. Meiner Erfahrung behindert es mehr als es bringt.
Liest sich wie: "Wenn hier jemand was über Kommentierung schreibt, dann ich und sonst keiner. Ich verbiete jedem anderen, diese Kommentierungsratschläge zu hinterfragen oder sonstwie zu kritisieren."

Was mich aber nicht abhalten wird, denn du hast hier nichts zu verbieten: Bei größeren verschachtelten Strukturen ist es allemal besser, das Ende eines Blocks zu kommentieren, als hinterher mühevoll hoch- und runterscrollen zu müssen, wenn man das Ende eines Blocks sucht.
Wer hat hier wem was verboten?

Es ist nur ein Hinweis darauf, dass eine Diskussion über Kommentare wie, wann und wo in seinen Augen müßig ist und er sich daran nicht weiter beteiligen würde. Er gibt hier nur seine eigene Erfahrung wieder.

Mit keinem Wort wird dort irgendwem - noch nicht mal dir - irgendwas verboten. Er weist nur darauf hin, dass er sich an einer potentiell aufkommenden KommentarWoWannWieUndWieOftDiskussion nicht beteiligen wird.

Warum man sich da jetzt persönlich angegriffen fühlt entzieht sich mir leider.

Versuch doch mal die Bürste nicht immer gegen den Strich zu ziehen
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
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Fastreport eine Textdatei laden

  Alt 5. Mär 2014, 05:03
Frag doch mal andersrum: Wieso muß er das extra erwähnen, daß er keine Diskussion über seine ungebetenen Ratschläge wünscht? Er könnte Kritik oder Widerspruch ja auch unkommentiert stehen lassen, ohne extra zu betonen, daß er keine Diskussion darüber wünscht. In dem Fall würde sich keiner dran stören. Deshalb meine Formulierung "liest sich wie ...". Natürlich wird er es nicht wagen, hier explizit ein Verbot auszusprechen. Mein Kommentar ist eben meine Ansicht und entspricht meiner Erfahrung, die ich hier wohl genau so wiedergeben darf wie SX. Wenn ich etwas in irgend einer Form anstößig finde, dann sag ich das auch: Es steht ihm nicht zu, sich in einem Diskussionsforum Kommentare zu verbeten, denn das entspricht dem Wunsch, man möge es nicht gestatten, seine Kommentare zu kritisieren oder ihnen gar zu widersprechen. Dieser seltsame "Hinweis" ist reine Provokation, ansonsten macht er keinen Sinn.

Laßt doch die Leute ihre Kommentare in den Quelltext schreiben, wie sie lustig sind. Als ich damals mit Delphi bzw. mit Turbo Pascal anfing, hab ich erstmal auch sehr viel kommentiert, weil ich dann nicht immer wiederholt nachschlagen mußte, was denn dieser oder jener Befehl bedeutet. Schließlich war ich ja noch am Lernen. Heute, nach knapp 20 Jahren Pascal und über 10 Jahren Delphi kommentiere ich auch viel sparsamer, wenn ich das alleine entscheiden darf. Nicht wenige Auftraggeber schreiben jedoch vor, wie kommentiert und formatiert werden soll. Kürzlich verlangte sogar einer von mir durchgehend Großschreibung bei bestimmten Tokens: FUNCTION, PROCEDURE, BEGIN, END, FOR, TO, DO usw. sollten immer in Großbuchstaben geschrieben werden. Andere verlangen Kommentare, wo ich keine setzen würde, der eine besteht darauf, daß Kommentare immer in geschweifen Klammern stehen, der andere will unbedingt immer den Doppelslash. Was soll's, da würd' ich auch keine Diskussion mit dem Geldgeber anfangen. Ich hatte auch schon völlig unkommentierten Fremdcode zu bearbeiten, da verbringe ich erstmal ein paar Tage mit Testen und Kommentieren. Es gibt so viele unterschiedliche Aspekte des Kommentierens, daß es schon fast überheblich klingt, einem neuen Forenmitglied gleich mal die eigenen Kommentiergepflogenheiten in dieser fast schon autoritären Weise auf's Auge drücken zu müssen. Ohne diesen seltsamen Hinweis, der eigentlich besagt, "diskutiert wird darüber nicht", wäre das eher harmlos aufzufassen.

Aber hier, in einem Diskussionsforum zu verlangen, man möge von kritischen Äußerungen zu seinen Kommentargepflogenheiten absehen, ist dann schon ein starkes Stück. Mit anderen Worten: Es ist schon arg seltsam, einerseits Empfehlungen zur Kommentierung reinzuschreiben, gleichzeitig aber Diskussionen über Kommentierung als fruchtlos zu bezeichnen, und das alles nur, weil er meint, seine Kommentargepflogenheiten seien die einzig Wahren. Da brauch ich nicht gegen den Strich bürsten, da sträuben sich mir die Nackenhaare von ganz alleine

Geändert von Perlsau ( 5. Mär 2014 um 05:05 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Fastreport eine Textdatei laden

  Alt 5. Mär 2014, 05:10
Ist es eigentlich nicht mehr möglich einfach nur eine Frage zu beantworten ohne sich dann über unwichtige Kleinigkeiten in die Haare zu bekommen?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 01:48 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