Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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:

ausblenden 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 :oops:

_________________
ut vires desint, tamen est laudanda voluntas
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Sa 10.05.08 12:31 
user profile iconD. Annies hat folgendes geschrieben:

ausblenden 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);

sollte es nicht ReWrite heißen?

_________________
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 10.05.08 13:02 
Hi, Xion,

nein, - ich will Text anhängen.
Gruß, Detlef

_________________
ut vires desint, tamen est laudanda voluntas
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Sa 10.05.08 13:47 
ah, das geht mit append. wieder was dazugelernt :D

_________________
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 10.05.08 14:23 
Hi, Xion - kleiner Nebeneffekt - :P
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 10.05.08 14:58 
user profile iconD. Annies hat folgendes geschrieben:
concat [concetenate] verbindet Strings zu einem Gesamtstring - ist erprobt!


[OT]Warum verwendest du nicht einfach den +-Operator :gruebel: ?[/OT]

AXMD
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 10.05.08 20:37 
Bin jetzt bei folgendem Code:

ausblenden 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;  // Fehler!!
  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 10.05.08 20:52 
hi, smiley,

danke für create, der \ steht drin
Detlef

_________________
ut vires desint, tamen est laudanda voluntas
SmileySN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: 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.

ausblenden volle Höhe Delphi-Quelltext
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;
{Für CLX-Anwendungen: uses SysUtils, Variants, Classes, QGraphics, WControls, QForms, QDialogs;
type  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
  private
    { private-Deklarationen }

  public
    { public-Deklarationen }
    ClickList: TStrings; { Feld deklarieren }
  end;
var  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
    ClickList := TStringList.Create;{ Liste erzeugen }
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ClickList.SaveToFile(ChangeFileExt(Application.ExeName, '.log'));{ die Liste speichern }
 ClickList.Free;{ Listenobjekt freigeben }
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
begin
  ClickList.Add(Format('Click at (%d, %d)', [X, Y]));{ Der Liste einen String hinzufügen }
end;

end.


Außerdem habe ich Stringlist.Append nicht gefunden nur Stringlist.Add
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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":
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 297

WinXP, Win7
Delphi 2010 Professional
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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



BeitragVerfasst: So 11.05.08 10:40 
user profile iconD. 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:

ausblenden 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 :oops:


bei mir funktioniert der code wunderbar

ausblenden 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); //Fehler
 {$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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var 
 t1: textfile;
 s: string;
// ...
s := concat(label30.caption,'OUTTXT\leihprotokoll.txt');  //diesen wert prüfen
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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 :eyecrazy:

_________________
ut vires desint, tamen est laudanda voluntas
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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