Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 11:37
Hi, Delpher,
manchmal kann man ja an sich selbst zweifeln.
Ich verwende den folgenden Code, um in eine Textdatei zu schreiben:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var t1: textfile; assignfile(t1, concat(label30.caption,'OUTTXT\leihprotokoll.txt')); append(t1); writeln(t1, 'hi'); closefile(t1); |
Aber leider erscheinen in der Textdatei (die vorhanden und nicht leer ist) am Ende nur Steuerzeichen.
Was ist da los?? (Fühle mich wie ein Baby)
Danke für Hilfe, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 10.05.08 12:31
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 13:02
Hi, Xion,
nein, - ich will Text anhängen.
Gruß, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 10.05.08 13:47
ah, das geht mit append. wieder was dazugelernt 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 14:23
Hi, Xion - kleiner Nebeneffekt -
aber was ist denn bloß an dem Code falsch - er funktioniert an anderen Stellen des Codes ja - mit anderen Dateien.
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 10.05.08 14:25
wenn ich wüsste was "concat" sein soll. Also grundsätzlich solltest du den VOLLEN Pfad für die Datei angeben, da sonst Windoof die Datei sonst wo hinspeichern könnte.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 14:54
Hi, Xion,
concat [concetenate] verbindet Strings zu einem Gesamtstring - ist erprobt!
Daran liegt es nicht,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 10.05.08 14:58
D. Annies hat folgendes geschrieben: | concat [concetenate] verbindet Strings zu einem Gesamtstring - ist erprobt! |
[OT]Warum verwendest du nicht einfach den +-Operator  ?[/OT]
AXMD
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 10.05.08 16:18
Guck dir mal meinen Beitrag zu den Pascal-Datei Routinen in der Delphipraxis an: www.delphipraxis.net...st883744.html#883744
Warum nimmst du keine TStringList?
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 19:24
Hi, Andreas und Luckie,
hab jetzt mal den +-Operator genommen und werde die Textdatei lokal deklarieren.
Melde mich wieder, (danke für euer Interesse)
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 20:37
Bin jetzt bei folgendem Code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure tform1.leihprot; var n, k, anzb : integer; inhalt, anzs : string[35]; tx : textfile; strliste : Tstringlist; zeile : string[80]; begin assignfile(tx, label30.caption+ 'OUTTXT\leihprotokoll.txt'); reset(tx); while not eof(tx) do begin readln(tx, zeile); strliste.Add(zeile); end; closefile(tx);
strliste.Append('hi'); strliste.Append(datetostr(date)+ ' '+ timetostr(time)+ ' '+ ort+ ' *** '+ aktuser); strliste.SaveToFile(label30.caption+ 'OUTTXT\leihprotokoll.txt');
showmessage('hi'); |
Da ist aber noch wieder was falsch. Luckie?
_________________ ut vires desint, tamen est laudanda voluntas
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Sa 10.05.08 20:48
Die Stringliste muss erst erzeugt werden, bevor man sie benutzen kann.
TStrliste.Create;
Ansonsten mal prüfen was in Label30.Caption drin steht, ob da auch der Backslash am ende drin ist.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 20:52
hi, smiley,
danke für create, der \ steht drin
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Sa 10.05.08 21:20
Übrigens muss die Stringliste auch wieder freigegeben werden, wenn man sie nicht mehr braucht.
Falls die Liste im Programm immer benötigt wird, dann würde ich sie im Formcreate erstellen und im Formdestroy wieder freigeben.
Hier ein Beispiel aus der Delphihilfe.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
public ClickList: TStrings; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin ClickList := TStringList.Create; end;
procedure TForm1.FormDestroy(Sender: TObject); begin ClickList.SaveToFile(ChangeFileExt(Application.ExeName, '.log')); ClickList.Free; end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ClickList.Add(Format('Click at (%d, %d)', [X, Y])); end;
end. |
Außerdem habe ich Stringlist.Append nicht gefunden nur Stringlist.Add
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 21:33
hi, smiley,
danke für deine Mühe, verfolge ich gleich - aber jetzt haltet euch fest:
ich habe deb folgenden Code mal "vorgeschaltet":
Delphi-Quelltext 1: 2: 3: 4:
| assignfile(tx,label30.caption+ 'OUTTXT\leihprotokoll2.txt'); rewrite(tx); writeln(tx, 'hi'); writeln(tx, datetostr(date), ' ', timetostr(time), ' ', ort, ' *** ', aktuser); closefile(tx); |
Also vor das assignfile ... append(t1);
Es geht wunderbar! ????? Alles bestens zu sehen.
ÄÄÄÄH??
Detlef, ratlos.
_________________ ut vires desint, tamen est laudanda voluntas
|
|
SmileySN
      
Beiträge: 297
WinXP, Win7
Delphi 2010 Professional
|
Verfasst: Sa 10.05.08 21:47
Dazu sollte man etwas mehr code sehen könne, aber möglicherweise hat sich auch was im delphi verheddert.
Starte das Delphi mal neu und lade das Projekt neu, mal sehen ob es dann immer noch so läuft.
Möglicherweise hast Du auch noch ein anderes tx irgendwo oder global definiert und greift darauf zu.
wenn append vor assign kommt, müsste ein Fehlermeldung beim append erscheinen, da es tx ja noch gar nicht richtig gibt.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 10.05.08 22:07
hi, smiley,
habe alles geprüft, es muss an append liegen - mit vorgeschaltet meinte ich, dass ich diese 3 Zeilen vor den oben angegebenenen Code gesetzt habe, alles ganz harmlos.
Habe ausgeschaltet, eingeschaltet - gleiches bild, gleicher ton - zum Mäusemelken!
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 11.05.08 10:40
D. Annies hat folgendes geschrieben: | Hi, Delpher,
manchmal kann man ja an sich selbst zweifeln.
Ich verwende den folgenden Code, um in eine Textdatei zu schreiben:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var t1: textfile; assignfile(t1, concat(label30.caption,'OUTTXT\leihprotokoll.txt')); append(t1); writeln(t1, 'hi'); closefile(t1); |
Aber leider erscheinen in der Textdatei (die vorhanden und nicht leer ist) am Ende nur Steuerzeichen.
Was ist da los?? (Fühle mich wie ein Baby)
Danke für Hilfe, Detlef  |
bei mir funktioniert der code wunderbar
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| program Project1; {$APPTYPE CONSOLE}
uses SysUtils;
var tf: textfile; begin assign(tf, copy(paramstr(0), 1, length(paramstr(0))-3)+'.txt'); {$i-} append(tf); if IOResult <> 0 then rewrite(tf); if IOResult <> 0 then halt(1); {$I+} writeln(tf, 'test text für append'); close(tf);
end. |
an deiner stelle würd ich den code " concat(label30.caption,'OUTTXT\leihprotokoll.txt'" gegen zuweisung in eine stringvariable, welche du überprüfen solltest auf den korrekten string diese dann wieder neu einsetzen.
dann sähe dein code in etwa wie folgt aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var t1: textfile; s: string; s := concat(label30.caption,'OUTTXT\leihprotokoll.txt'); assignfile(t1, s); append(t1); writeln(t1, 'hi'); closefile(t1); |
ich vermute mal, dass dein vezeichnis falsch zusammengestellt wird, z.b. wegen fehlenden oder doppelten oder was auch immer \
darüber hinaus solltest du schaun, dass du absolute pfade verwendest, da du sonst nie weisst, wohin du wirklich schreibst...
<HTH> GG
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: So 11.05.08 17:38
Hi, GG
danke auch für dein Interesse!
Ich bin immer noch am "Kämpfen" - ich überprüfe jetzt auch deine Idee nochmal - melde mich wieder,
Gruß, Detlef 
_________________ ut vires desint, tamen est laudanda voluntas
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: So 11.05.08 19:08
So, überprüft ist, Pfad stimmt, kein \ zuviel oder zuwenig.
Hammer:
ich habe dann einmal die Daten in eine Datei leihprotokoll2.txt kopiert (mit Notepad), die Datei umbenannt (leihprotokoll.txt) - dann wurde einmal angehängt (!!) - danach nicht mehr, wieder die Steuerzeichen.
Es wird also immer besser: Wir erweitern Ihre Frustrationstolerenz oder was??
Gruß, Det?\ö (*gg*)
_________________ ut vires desint, tamen est laudanda voluntas
|
|
|