Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi kleine abfrage (https://www.delphipraxis.net/36572-kleine-abfrage.html)

raccoon 21. Dez 2004 22:45


kleine abfrage
 
hallo, also ich wollte folgendes realisieren, und zwar das wenn ein textfeld leer ist er eine schaltfläche nicht zeigen soll.

so sieht das bisher aus nur der kommt mit den typen nicht klar

Delphi-Quellcode:
if (not (edit1.text := '')) then
begin
button1.Visible:= true;
end;
wie muss das aussehen??

gmarts 21. Dez 2004 22:50

Re: kleine abfrage
 
Zitat:

Zitat von raccoon
hallo, also ich wollte folgendes realisieren, und zwar das wenn ein textfeld leer ist er eine schaltfläche nicht zeigen soll.

so sieht das bisher aus nur der kommt mit den typen nicht klar

Delphi-Quellcode:
if (not (edit1.text := '')) then
begin
button1.Visible:= true;
end;
wie muss das aussehen??

So: :)

Delphi-Quellcode:
if not (edit1.text= '') then
button1.Visible:= true
else
button1.Visible:= false;
bzw.

Delphi-Quellcode:
if edit1.text <> '' then
button1.Visible:= true
else
button1.Visible:= false;
bzw.

Delphi-Quellcode:
if edit1.text = '' then
button1.Visible:= false
else
button1.Visible:= true;
bzw.

Delphi-Quellcode:
if not (edit1.text <> '') then
button1.Visible:= false
else
button1.Visible:= true;

Merke:
:= ist eine Zuweisung
= ist ein Vergleich

begin und end sind nicht falsch, doch in dem Beispiel fördern sie nicht die Übersichtlichkeit.

MfG GM

raccoon 21. Dez 2004 22:52

Re: kleine abfrage
 
oh habsch voll vergessen..danke dir und schönen abend noch.

raccoon 21. Dez 2004 23:14

Re: kleine abfrage
 
und hab noch einen fehler jetzt..hier der code

Delphi-Quellcode:
var
  BackupName: string;
  FileHandle: TFileStream; // vorher 'Integer'
  StringLen: Integer;
  X: Integer;
  Y: Integer;
  begin
  if SaveDialog1.Execute then
  begin
    if FileExists(SaveDialog1.FileName) then
    begin
      BackupName := ExtractFileName(SaveDialog1.FileName);
      BackupName := ChangeFileExt(BackupName, '.BAK');
      if not RenameFile(SaveDialog1.FileName, BackupName) then

        raise Exception.Create('Unfähig eine Aushilfsdatei zu erschaffen.');
    end;
    FileHandle := FileCreate(SaveDialog1.FileName);
    FileWrite(FileHandle,
      Sg.ColCount, SizeOf(Sg.ColCount));
    FileWrite(FileHandle,
      Sg.RowCount, SizeOf(SG.RowCount));
    for X := 0 to SG.ColCount - 1 do
    begin
ich habe es mit beiden typen versucht er spuckt mir trotzdem immer den fehler aus entweder TFileStream und Filestream oder halt integer und filestream sind nicht kompatibel.

gmarts 21. Dez 2004 23:24

Re: kleine abfrage
 
Erstmal: Neue Frage, neuer Thread.

Filehandle muss Integer sein.

Der Code kommt aus dem Beispiel der OH. Und dort sehe ich grad keinen Fehler. In welcher Zeile kommt denn die Meldung.

raccoon 21. Dez 2004 23:27

Re: kleine abfrage
 
ja wenn ich den auf integer stelle zeigt er mir hier genau den selber fehler an.

Delphi-Quellcode:
FileHandle := FileCreate(SaveDialog1.FileName); //Inkompatible Typen 'Integer' und 'Filestream'

Luckie 21. Dez 2004 23:29

Re: kleine abfrage
 
Dann mach mal aus deinem Integer einen TFileStream.

Und was den Button betrifft:
Delphi-Quellcode:
Button1.Enabled := Edit1.Text <> '';
ist etwas einfacher, als dein if-else Konstrukt.

gmarts 21. Dez 2004 23:30

Re: kleine abfrage
 
Sollte schon ein Integer bleiben:
Delphi-Quellcode:
function FileCreate(const FileName: string): Integer;

Hast du Filename noch woanders(global) als etwas anderes deklariert?

Zitat:

Code:
Button1.Enabled := Edit1.Text <> '';

Man lernt nie aus. :)

raccoon 21. Dez 2004 23:31

Re: kleine abfrage
 
ja das mit dem TFileStream hab ich auch schon versucht klappt auch nicht da sagt er mir dann halt den fehler: Inkompatible typen Tfilestream und filestream.

raccoon 21. Dez 2004 23:32

Re: kleine abfrage
 
nein filename hab ich nirgendwo deklariert...

raccoon 21. Dez 2004 23:38

Re: kleine abfrage
 
also nun ist er weiter gehumpelt aber meldet jetzt sofort den fehler: [Error] Datenfenster.pas(145): E2250 There is no overloaded version of 'FileWrite' that can be called with these arguments
zeile 5,7,14,15,

desweiteren in zeile 15 den fehler: [Error] Datenfenster.pas(147): E2066 Missing operator or semicolon

und in zeile 19 [Error] Datenfenster.pas(150): E2010 Incompatible types: 'FileStream' and 'Integer'

Delphi-Quellcode:
 1   raise Exception.Create('Unfähig eine Aushilfsdatei zu erschaffen.');
 2   end;
 3   FileHandle := FileCreate(SaveDialog1.FileName);
 4   FileWrite(FileHandle,
 5     Sg.ColCount, SizeOf(Sg.ColCount));
 6   FileWrite(FileHandle,
 7     Sg.RowCount, SizeOf(SG.RowCount));
 8   for X := 0 to SG.ColCount - 1 do
 9   begin
 10
 11     for Y := 0 to SG.RowCount - 1 do
 12     begin
 13       StringLen := Length(SG.Cells[X,Y]);
 14       FileWrite(FileHandle, StringLen, SizeOf(StringLen));
 15       FileWrite(FileHandle,
 16       SG.Cells[X,Y], stringlen(SG.Cells[X,Y]));
 17     end;
 18   end;
 19   FileClose(FileHandle);

gmarts 21. Dez 2004 23:56

Re: kleine abfrage
 
hmmmm ???
bei mir erzeugt dein Code keinen Fehler? Habe Filehandle als Integer vereinbart, so wie es sein muss.

Ups...vorhin meinte ich nicht Filename, sondern natürlich filehandle....ist das woanders nochmal deklariert?

Was ist Datenfenster.pas?! Wahrscheinlich liegt dort der Knackpunkt. Dort ist sicher eine auch Procedure Filewrite enthalten, die aber nach einem filehandle vom Typ Tfilestream verlangt!?!

Kommt der Fehler auch noch, wenn du das schreibst:
Delphi-Quellcode:
sysutils.filewrite(blabla)
usw. ?

Christian Seehase 22. Dez 2004 00:04

Re: kleine abfrage
 
Moin Gunar,

Du hast eine Variante vergessen:


Delphi-Quellcode:
button1.Visible:= edit1.text <> '';
;-)

raccoon 22. Dez 2004 12:51

Re: kleine abfrage
 
hi, also Datenfenster.pas ist die unit, bzw die form für das stinggrid.

filehandle hab ich auch als integer deklariert nur in dieser procedure sonst nirgends.
womit hast du den quelltext denn geschrieben?? ich habe ihn vor nem jahr mit delphi 7 gemacht, diese version hab ich aber leider nichtmehr und benutzte zur zeit delphi 2005, kann es vielleicht daran liegen das er es nicht annimmt??

gmarts 22. Dez 2004 14:02

Re: kleine abfrage
 
Hi, benutze Delphi 6. Bei 2005 bin ich der falsche Ansprechpartner. :)


Zitat:

filehandle hab ich auch als integer deklariert nur in dieser procedure sonst nirgends.
Ganz sicher auch nicht in deiner Datenfenster-Unit?

raccoon 22. Dez 2004 14:38

Re: kleine abfrage
 
jop bin ich mir ganz sicher...ich krieg echt nen wurm dabei...bei der öffnen procedure genauso, da erkennt er kein allocmem und freemem....

gmarts 22. Dez 2004 15:20

Re: kleine abfrage
 
Sorry, ich kann dir nicht weiterhelfen.
Am besten du machst für dieses spezielle Problem nen neuen Thread auf mit einem aussagekräftigen Titel(vielleicht auch zum Thema Delphi2005).

Leute, die in diesen Thread schauen, blicken nur kurz auf dein "kleine Abfrage"-Problem und denken sich, das dies sicher schon gelöst worden ist.
MfG GM


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz