AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Ntzliche 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 Beitrge
 
Turbo Delphi fr Win32
 
#1

viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:07
Hallo hab mal eine Frage zur Arbeit mit meiner Textdatei. Mchte 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 fhrt zu folgendem Datei aussehen:

Zitat:
#Programm Start    @   |   l l  ?| S|    ϑ||  | 4@  NK :@ @  x .@ Q@ MK MK xzJ zJ @ i@ )#Prozedure VerzeichnisnameErzeugen Beginn6~  `{ t{   
 \ ` 9~06~*6~{7~ S    t{     -Y  7~`{ {   x G     H x PA '#Prozedure VerzeichnisnameErzeugen Ender طᅌ6 *|妴 gP ; r طᅌ6 *|妴 gP ; MK  |< ;MK  
 K*@  " K]
 MK /@  X@ p6  MK ^T@ K]
6#Prozedure Verzeichnis (Teil Treeview gendert) Beginn 9~06~*6~{7~ S    t{      -Y  7~`{ {   t G     H t PA 
  H ` vG ` G 8|J  ,#Prozedure VerzeichnisstrukturAnlegen Beginnichnis (Teil Treeview gendert) Beginn 9~06~*6~{7~ S    t{      -Y  7~`{ {   t G     H t PA 
  H ` '#Prozedure VerzeichnisseExistieren Endeeginnichnis (Teil Treeview gendert) Beginn 9~06~*6~{7~ S    t{      -Y  7~`{ {   t G    MK .@ 1R@ . $ X@  rJ MK ^T@ K]
4#Prozedure Verzeichnis (Teil Treeview gendert) Ende S    t{      -Y  7~`{ {   \ G     H \ PA 
  H ` vG ` G 8|J l M|J U|J K]
MK @ | #Programm Startendert) Ende S    t{      -Y  7~`{ {   \ G     H \ PA 
  H ` vG ` G 8|J l M|J U|J K]
MK @ | | rJ  rJ rJ #Programm Startendert) Ende S    t{      -Y  7~`{ {   \ G     H \ PA 
  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| > > iK]
q      |@ |= |d > iK]
8  8  4 Fi 8 D 8  1P MK    RTSCTS K]
MK  #Initialisierung abgeschlossen 
wrde 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 Mll 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.861 Beitrge
 
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.625 Beitrge
 
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 lngst gekommen
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beitrge
 
Turbo Delphi fr 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 mchte von diesem Typ ist. Fehlermeldung "inkompativle Typen".
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beitrge
 
Delphi 12 Athens
 
#5

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:26
Was mchstest 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 lngst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beitrge
 
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 anzufgen

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 LngenByte des verwendeten ShortStrings (string[255]) und aus der Tatsache,
dass der String nur teilweise mit neuen Daten befllt wird, aber mit den vollen 255 Zeichen {+ Lngenbyte?} 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 Beitrge
 
#7

Re: viel Mist in einer Textdatei

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

Registriert seit: 23. Jan 2008
3.686 Beitrge
 
Delphi 2007 Enterprise
 
#8

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:39
Bis zu einer gewissen Gre 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 Stck weit nachbilden kann). Ab ein paar MB an Text wrde ich dann aber dazu raten nicht mehr ganze Files in die Liste zu schlabbern. Der groe Vorteil: Speichern/Laden ist schon fertig eingebaut, und resultiert in "mllfreien" 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 Beitrge
 
Delphi 2007 Professional
 
#9

Re: viel Mist in einer Textdatei

  Alt 7. Nov 2008, 09:41
Hi,

hier eine Funktion fr 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 Beitrge
 
Turbo Delphi fr 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 fr 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 gendert) Beginn
#Prozedure VerzeichnisstrukturAnlegen Beginn
#Prozedure VerzeichnisseExistieren Ende
#Prozedure Verzeichnis (Teil Treeview gendert) 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 Beitrge zu antworten.
Es ist dir nicht erlaubt, Anhnge hochzuladen.
Es ist dir nicht erlaubt, deine Beitrge 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 12:08 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