AGB  ·  Datenschutz  ·  Impressum  







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

viel Mist in einer Textdatei

Ein Thema von BAMatze · begonnen am 7. Nov 2008 · letzter Beitrag vom 7. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2   
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:07
Hallo hab mal eine Frage zur Arbeit mit meiner Textdatei. Möchte einen Programmablauf dokumentieren und habe schon einige Fileformate in Delphi probiert. Womit ich zumindest Erfolg hab war das Filformat "file of string[255]" allerdings schreibt er mir dann ne Menge Mist, welcher noch in dem String ist (von mir aber nicht reingeschrieben wurde, sondern allte Daten) mit in meine Datei. Das führt zu folgendem Datei aussehen:

Zitat:
#Programm Start   Ìü @ °ü  ‘| Üý  ˜ ðl ðl  ?á€|ý S€|  À  € ÜÏ‘|œ€|  |ý Ù4@  NK :@ ›@  xý î.@ ¦Q@ ¬MK ˆMK xzJ €zJ @³ß àiã@ )#Prozedure VerzeichnisnameErzeugen Beginn6~  `ß{ tß{   
 \ü `ý 9~0ˆ6~ÿÿÿÿ*ˆ6~{’7~ Sè   ý tß{     -Y ý ô7~`ß{ ØÞ{ ý  Ëä xý ˆG   ý  H xý PòA '#Prozedure VerzeichnisnameErzeugen Ender Ø·á…Œ6¢Œü *’|Êî妴 ¹gúëP×Æ ÷ÿÿÿ ˜;žÄü Êîå¦r Ø·á…Œ6¢Äü *’|Êî妴 ¹gúëP×Æ ÷ÿÿÿ ˜;žüü ”MK äü ’|< ˜;ž÷ÿÿÿ”MK Êþï Êþï
ý K*@ ý " ¨K]
 ”MK /@ ý £X@ p6å  êã ”MK ^T@ ¨K]
6#Prozedure Verzeichnis (Teil Treeview geändert) Beginn 9~0ˆ6~ÿÿÿÿ*ˆ6~{’7~ Sè   ý tß{      -Y ý ô7~`ß{ ØÞ{ ý  Ëä tý ˆG   ý  H tý PòA Â
  H Ëä `Žæ âvG `Žæ œG 8|J „ý ,#Prozedure VerzeichnisstrukturAnlegen Beginnichnis (Teil Treeview geändert) Beginn 9~0ˆ6~ÿÿÿÿ*ˆ6~{’7~ Sè   ý tß{      -Y ý ô7~`ß{ ØÞ{ ý  Ëä tý ˆG   ý  H tý PòA Â
  H Ëä `Žæ '#Prozedure VerzeichnisseExistieren Endeeginnichnis (Teil Treeview geändert) Beginn 9~0ˆ6~ÿÿÿÿ*ˆ6~{’7~ Sè   ý tß{      -Y ý ô7~`ß{ ØÞ{ ý  Ëä tý ˆG    MK Ò.@ 1R@ . $ ØX@  rJ MK ^T@ ¨K]
4#Prozedure Verzeichnis (Teil Treeview geändert) Ende Sè Â  ý tß{    Â Â -Y èü ô7~`ß{ ØÞ{ ý  Ëä \ý ˆG Â  ý  H \ý PòA Â
  H Ëä `Žæ âvG `Žæ œG 8|J lý M|J U|J ¨K]
¬MK @³ß |ý #Programm Starteändert) Ende Sè   ý tß{      -Y èü ô7~`ß{ ØÞ{ ý  Ëä \ý ˆG   ý  H \ý PòA Â
  H Ëä `Žæ âvG `Žæ œG 8|J lý M|J U|J ¨K]
¬MK @³ß |ý |ý ÏrJ „ý ärJ ìrJ #Programm Starteändert) Ende Sè   ý tß{      -Y èü ô7~`ß{ ØÞ{ ý  Ëä \ý ˆG   ý  H \ý PòA Â
  H Ëä `Žæ âvG `Žæ œG 8|J lý M|J U|J ¨K]
¬MK @³ß |ý |ý ÏrJ „ý ärJ ìrJ )#V-Tisch1 antwortet nicht und ist offline|4 À ¨K]
¬MK  `ý ÿÿÿÿôü |Б|z§€| ý ž§€| ¨K]
   $ À0ý <ö‘|Aö‘|$ À  ý lÒ‘|„ý é‘|$ À @ý ”€| ¨ý Ò.@  Ò.@ 1R@ 2 \U@ €¨å qU@  ¨K]
¬MK  ©J #V-Tisch1 v=5000, a=5000t und ist offline|4 À ¨K]
¬MK  `ý ÿÿÿÿôü |Б|z§€| ý ž§€| ¨K]
   $ À0ý <ö‘|Aö‘|$ À  ý lÒ‘|„ý é‘|$ À @ý ”€| *ý Ò.@  Ò.@ 1R@ " \U@ À/æ qU@  ¨K]
¬MK  ՍJ !#V-Tisch1Kalibrierung eingeleitet offline|4 À ¨K]
¬MK  `ý ÿÿÿÿôü |Б|z§€| ý ž§€| ¨K]
   $ À0ý <ö‘|Aö‘|$ À  ý lÒ‘|„ý é‘|$ À @ý ”€| ˜ý Ò.@  Ò.@ 1R@ * \U@ èæ qU@  ¨K]
¬MK  ŽJ )#V-Tisch2 antwortet nicht und ist offline|4 À ¨K]
¬MK  `ý ÿÿÿÿôü |Б|z§€| ý ž§€| ¨K]
   $ À0ý <ö‘|Aö‘|$ À  ý lÒ‘|„ý é‘|$ À @ý ”€| ¨ý ¨ý  Ò.@ 1R@ î.@ òQ@ qU@  ¨K]
¬MK  ©J #V-Tisch2 v=5000, a=5000t und ist offline|4 À ¨K]
¬MK  `ý ÿÿÿÿôü |Б|z§€| ý ž§€| ¨K]
   $ À0ý <ö‘|Aö‘|$ À  ý lÒ‘|„ý é‘|$ À @ý ”€| *ý *ý  Ò.@ 1R@ î.@ òQ@ qU@  ¨K]
¬MK  ՍJ !#V-Tisch2Kalibrierung eingeleitet offline|4 À ¨K]
¬MK  `ý ÿÿÿÿôü |Б|z§€| ý ž§€| ¨K]
   $ À0ý <ö‘|Aö‘|$ À  ý lÒ‘|„ý é‘|$ À @ý ”€| ˜ý ˜ý  Ò.@ 1R@ î.@ òQ@ qU@  ¨K]
¬MK  ŽJ )#Pi-Tisch antwortet nicht und ist offline’| > > iõ¨K]
Øq³   Øü ü ÿÿÿÿý é‘|@ ’|ÿÿÿÿ= ’|dõ > iõ¨K]
8„³  8„³ ðü ¤Ç4ý Fÿÿÿÿiõà 8„³ ¤ÇD¥ 8„³ „ý ë1ÿÿÿÿP§ ¬MK    RTSCTS ¨K]
¬MK  #Initialisierung abgeschlossen 
würde eigentlich gern das Format Textfile verwenden, nur leider wird da der Befehl seek nicht akzeptiert. Kann mir jemand nen Tip geben, wie ich eine ordentliche Textdatei erstellen kann ohne den ganzen Müll und wo auch jeder Zeileneintrag mit Writeln auch wirklich in eine neue Zeile geschrieben wird.

Vielen dank

BAMatze
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:09
Er scheint eine AnsiString-Datei als Unicode zu interpretieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#3

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:11
Wenn Du einen String[255] definierst, musst Du diesen auch vor dem Schreiben initialisieren (FillChar(Zu_schreibender_String,#0)). Ansonsten ist TextFile doch eigentlich das passende Format.
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
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:18
Was ich bei Textfile nicht verstehe, ist dass seek immer einen Fehler bringt, wenn die Datei in der ich springen möchte von diesem Typ ist. Fehlermeldung "inkompativle Typen".
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#5

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:26
Was möchstest Du mit Seek eigentlich erreichen?
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 The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#6

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:28
In "Textfile"s darf nicht ge"seek"t werden, du kannst allerdings mit Append(txtfile); an das Ende der Datei springen um Zeilen anzufügen

Delphi-Quellcode:
const
  Filename = 'foo.txt';
var
  txt:Textfile;
begin
  AssignFile(txt, Filename);
  if FileExists(Filename) then
    Append(txt) // An's Ende der Datei "seek"en
  else
    Rewrite(txt); // Datei erstellen, falls nicht vorhanden

{....}
  Writeln(txtx, 'blaa');
{....}

  CloseFile(txt);
end;
der "Mist" Resultiert aus dem LängenByte des verwendeten ShortStrings (string[255]) und aus der Tatsache,
dass der String nur teilweise mit neuen Daten befüllt wird, aber mit den vollen 255 Zeichen {+ Längenbyte?} geschrieben wird

*Edit: AssignFile statt Assign {noch aus TP -Zeiten }
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#7

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:34
Es ist mir noch nicht ganz klar, was du machen möchtest, aber vielleicht wäre eine TStringList und deren Methode SaveToFile eine Alternative?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:39
Bis zu einer gewissen Größe kann man zudem mit einer TStringList recht komfortabel arbeiten, nicht zuletzt wegen des indizierten Zugriffs auf einzelne Zeilen (was u.U. die Funktion von Seek ein Stück weit nachbilden kann). Ab ein paar MB an Text würde ich dann aber dazu raten nicht mehr ganze Files in die Liste zu schlabbern. Der große Vorteil: Speichern/Laden ist schon fertig eingebaut, und resultiert in "müllfreien" Textfiles
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#9

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:41
Hi,

hier eine Funktion für Seek mit TextFiles:

Delphi-Quellcode:
function TextSeek(var F : TextFile; Target : LongInt) : Boolean;
var Pos : LongInt;
begin
  with TTextRec(F) do begin
    Result := False;
    if Mode <> fmInput then Exit;
    Pos := FileSeek(Handle, 0, FILE_CURRENT);
    if Pos = -1 then Exit;
    Dec(Pos, BufEnd);
    Pos := Target-Pos;
    if (Pos >= 0) and (Pos < BufEnd) then
      BufPos := Pos
    else begin
      if FileSeek(Handle, Target, FILE_BEGIN) = -1 then Exit;
      BufEnd := 0;
      BufPos := 0;
    end;
  end;
  Result := True;
end;
Gruß
Norman
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:42
Danke euch, das Append hat genau den Effekt gehabt, den ich erreichen wollte. Hier für alle der dementsprechende Quellcode und das Ergebnis in der Datei:

Delphi-Quellcode:
Assign(fTempFile, ExtractFilePath(ParamStr(0))+ 'Temp\' + Speicherverzeichnis.sTempDatei);
if FileExists(ExtractFilePath(ParamStr(0))+ 'Temp\' + Speicherverzeichnis.sTempDatei) = true then Reset(fTempFile)
else Rewrite(fTempFile);
Append(fTempFile);
writeln(fTempFile,Text);

closeFile(fTempfile);
(ist nur kurzer Auszug aus der Procedure)

und hier die jetzt wesentlich ansehnliche Datei:

Zitat:
#Programm Start
#Prozedure VerzeichnisnameErzeugen Beginn
#Prozedure VerzeichnisnameErzeugen Ende
#Prozedure Verzeichnis (Teil Treeview geändert) Beginn
#Prozedure VerzeichnisstrukturAnlegen Beginn
#Prozedure VerzeichnisseExistieren Ende
#Prozedure Verzeichnis (Teil Treeview geändert) Ende
#Programm Start
#Programm Start
#V-Tisch1 antwortet nicht und ist offline
#V-Tisch1 v=5000, a=5000
#V-Tisch1Kalibrierung eingeleitet
#V-Tisch2 antwortet nicht und ist offline
#V-Tisch2 v=5000, a=5000
#V-Tisch2Kalibrierung eingeleitet
#Pi-Tisch antwortet nicht und ist offline
#Initialisierung abgeschlossen
#Prozedure Einstellungsanzeige Beginn
#Prozedure Einstellungsanzeige Ende
Danke an alle
  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 11:59 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 by Thomas Breitkreuz