Autor Beitrag
Grinarn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 31.12.07 02:19 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 31.12.07 02:52 
Zeig mal Zeile 34 +-5
Grinarn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 31.12.07 02:55 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



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

Win XP Prof
D7 Enterprise
BeitragVerfasst: Mo 31.12.07 03:41 
user profile iconXentar 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.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
Grinarn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 31.12.07 03:54 
user profile iconDrRzf hat folgendes geschrieben:
user profile iconXentar 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Mo 31.12.07 04:39 
Da habsch ich wohl etwas Mist gelabert :oops:

versuchs mal als

ausblenden Delphi-Quelltext
1:
MyText : System.Text;					

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.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
Grinarn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 31.12.07 06:18 
Oki super, vielen vielen Dank. Genau das wars. Nun kann ich endlich in Ruhe schlafen :-)
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 31.12.07 11:47 
Alternativ zu Angabe des Namespaces kann man auch TextFile als Typ verwenden.

_________________
Markus Kinzler.