AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Einzelnen Unicodestring an Datei anhängen

Einzelnen Unicodestring an Datei anhängen

Ein Thema von gro · begonnen am 6. Jun 2011 · letzter Beitrag vom 6. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2   
gro

Registriert seit: 9. Jul 2004
Ort: Kärnten
17 Beiträge
 
Delphi 10.3 Rio
 
#1

Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:35
Hallo liebe Delphianer
nach langer Zeit der Überlegung bin ich nun endlich von Delphi7 auf DelphiXE umgestiegen.

Ich bin jetzt dabei alle Projekte und Komponenten auf Unicode umzustellen und dabei bin ich auf ein kleines Problem getroffen für das ich etwas Hilfe benötigen würde.

In meinen alten Projekten schreibe ich Logfiles welche bei den Kunden teilweise eine Grösse von mehreren GB erreichen können.

Alter Code:

Code:
 
Procedure TFComponentTest.WriteLogline(const szFile, szLogline : string);
var
  F1 : textfile;

begin
  AssignFile(F1, szFile);
  TRY
    if (FileExists(szFile) = TRUE) then begin
      Append(F1);
    end
    else begin
      Rewrite (F1);
    end;

    writeln (F1, szLogline);
  FINALLY
    Closefile (F1);
  END;
end;
Soweit so gut. Aber jetzt zu mein Problem:
Ich muss jetzt z.B folgenden String in die Logdatei schreiben

Ģenerē vieną įmonė читаете вы его! ÆàëîáûÎáñëóæèâàíèå

Als Übergangslösung für diese Kriksikraksi-Zeichen habe ich jetzt folgendes Implementiert:

Code:
Procedure TFComponentTest.WriteLogline1(const szFile, szLogline : string);
var
  aFileList : TStringlist;
  Encoding : TEncoding;

begin
  TRY
    aFileList := TStringlist.Create;
    if (FileExists(szFile) = TRUE) then begin
      aFileList.LoadFromFile(szFile);
    end;

    aFileList.Text := aFileList.Text + szLogline;
    aFileList.SaveToFile(szFile, Encoding.Unicode);
  FINALLY
    aFileList.Free;
  END;
end;
Das funktioniert soweit auch recht gut. Nur die Performanze geht mir dabei total in den Keller, da ich bei jeden einzelnen Logeintrag die Datei neu einlesen muss.

Habt Ihr eine Idee wie ich dieses Problem ev. mit WriteLn lösen könnte?

MfG Pit
Peter (EDV = Ende der Vernunft)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.385 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:43
Könntest Du nicht einen StringStream mit dem gewünschten Encoding erzeugen und dessen DataString dann an die Datei anhängen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:46
Wenn man Performance wünscht, sollte man wohl einen TFileStream nehmen. StringStreams, StringLists, etc. laden die ganze Datei halt sinnlos in den Arbeitsspeicher.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.385 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:51
Wer hat denn etwas von Datei laden gesagt? Ich meinte: StringStream erzeugen mit dem gewünschten String und Encoding. Dann Datei öffnen (Rewrite bzw. Append) und mit writeln den String aus dem Stream schreiben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:54
DataString eines TStringStreams ist immer UTF-16 - egal was man als Encoding einstellt?!
Ich würde den String einfach so in "rohe Bytes" umwandeln: TEncoding.UTF8.GetBytes('Ein beliebiger Text.')


Wer hat denn etwas von Datei laden gesagt?
Seine Funktion "WriteLogline1" lädt die Datei nun mal.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.385 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:56
Achso, ich dachte, Du beziehst Dich auf mich.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.898 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:58
Writeln(F1, UTF8Encode(szLogline));
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.385 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 10:59
*Pff* viel zu einfach, da könnte ja jeder kommen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.898 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 11:01
*Pff* viel zu einfach, da könnte ja jeder kommen
Check my sig, dude
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#10

AW: Einzelnen Unicodestring an Datei anhängen

  Alt 6. Jun 2011, 11:05
Du kannst eine Zeile an eine Logdatei z.B. so anhängen:

Delphi-Quellcode:

const
 CRLF : string = #13#10 ;

procedure AddToLog(LogFile: string; Msg: string);
var
  FLogStream: TStream;
begin
  
   if (not FileExists(LogFile)) then
   begin
     ForceDirectories(ExtractFilePath(LogFile)) ;
     FLogStream:= TFileStream.Create(LogFile,fmCreate);
   end
   else
   begin
     FLogStream:= TFileStream.Create(LogFile,fmOpenReadWrite);
   end;

   FLogStream.Seek(0,soFromEnd) ;
   Msg := Msg + CRLF ;
   FLogStream.Write(Pointer(Msg)^,Length(Msg)*SizeOf(Char)) ;

   FreeAndNil(FLogStream) ;

end;

Geändert von blackfin ( 6. Jun 2011 um 11:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf