Entwickler-Ecke
Dateizugriff - Keine Textdateivariablen in Ereignisroutinen?
Grinarn - Mo 31.12.07 02:19
Titel: Keine Textdateivariablen in Ereignisroutinen?
Moin Moin,
kann man in Ereignisroutinen keine variablen vom Typ Text deklarieren?
Ich würde gerne im FormShow Ereignis ein Memofeld mit Zeilen aus einer Datei füttern. Dazu brauche ich eine Variable vom Typ Text um meine Dateifunktionen nutzen zu können. Allerdings sagt der Compiler dann: [DCC Fehler] UHilfe.pas(34): E2007 Konstante oder Typenbezeichner erwartet
Wenn ich die Variable Unitglobal deklariere nimmt er das ab. Allerdings ist das nicht so gerne gesehen. Ich würde die Variable daher lieber nur procedurintern deklarieren.
Gruß Grinarn
Xentar - Mo 31.12.07 02:52
Zeig mal Zeile 34 +-5
Grinarn - Mo 31.12.07 02:55
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TFrmHilfe.populateMemo; var logDatei : Text; dummy : integer; zeile,filename : string; begin filename := 'LogLevel'+IntToStr(getAktLevelnummer)+'.txt'; if logDateiOpenRead(filename,logDatei) then begin while (logDateiZeileLesen(zeile,logDatei) AND (zeile <> 'Ende')) do begin dummy := MemoHilfe.Lines.Add(zeile); end; end;
if NOT logDateiSchliessen(logDatei) then dummy := MemoHilfe.Lines.Add('Fehler beim Schließen der Datei'); end; |
Das ist die Prozedur um die es sich handelt. Darüber gibt es nurnoch den von Delphi automatisch generierten kram.
Xentar - Mo 31.12.07 02:59
Warum das mit dem Typ "Text" nicht geht, kann ich leider nicht sagen.
Aber 2 vorschläge:
1. Versuch mal den Typ "File"
2. Warum nicht einfach Memo.Lines.ReadFromFile(); und anschließend die Zeilen durchlaufen, und alles nach der "Ende" Zeile abschneiden?
Grinarn - Mo 31.12.07 03:04
Also ich verwende halt meine selbst geschriebenen Dateifunktionen, da ich alle Dateizugriffe nur in einer Unit haben möchte. Stichwort Modularisierung :-)
Der Typ file wäre allerdings sinnlos, da ich ja Textdateien verarbeite und dafür genau dieser Typ gedacht ist. Ex funktioniert ja auch wenn ich die variable Unitglobal deklariere. Nur an genau der stelle nicht und das wundert mich ein wenig.
DrRzf - Mo 31.12.07 03:41
Xentar hat folgendes geschrieben: |
Warum das mit dem Typ "Text" nicht geht, kann ich leider nicht sagen.
|
Text ist kein Typ, daher kanst du ihn auch nicht zur variablendeklaration verwenden.
Warum das jetzt aber global funzt wundert mich ein wenig. aber evtl greift er ja dann auf das Property Text der Form zu.
versuchs besser mal mit strings,stringlist oder ähnlichem.
Grinarn - Mo 31.12.07 03:54
DrRzf hat folgendes geschrieben: |
Xentar hat folgendes geschrieben: | Warum das mit dem Typ "Text" nicht geht, kann ich leider nicht sagen.
|
Text ist kein Typ, daher kanst du ihn auch nicht zur variablendeklaration verwenden.
Warum das jetzt aber global funzt wundert mich ein wenig. aber evtl greift er ja dann auf das Property Text der Form zu.
versuchs besser mal mit strings,stringlist oder ähnlichem. |
Also ich habe den Typ bisher immer genutzt. Ist halt die kurzform von TextFile. Das funktioniert bei mir in allen Routinen in meine Dateiverarbeitung und unser Prof. hat dies in der Vorlesung auch so erklärt und vorgeführt.
Gruß Grinarn
DrRzf - Mo 31.12.07 04:39
Da habsch ich wohl etwas Mist gelabert :oops:
versuchs mal als
zu deklarieren.
wenn du die deklaration in einer Unit mit Form verwendest, dann greift er auf Text der Form zu, und deshlab meckert er.
weist du ihm direkt den typen aus der unit System zu dann macht er es.
Grinarn - Mo 31.12.07 06:18
Oki super, vielen vielen Dank. Genau das wars. Nun kann ich endlich in Ruhe schlafen :-)
mkinzler - Mo 31.12.07 11:47
Alternativ zu Angabe des Namespaces kann man auch TextFile als Typ verwenden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!