Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi keine boolean Rückgabe (https://www.delphipraxis.net/132650-keine-boolean-rueckgabe.html)

simlei 16. Apr 2009 20:10


keine boolean Rückgabe
 
Hi...

Mich regt sone ****** auf. Total unlogisch, kostet Nerven und beschäftigt ne ganze weile....

Code:
function returntrue():boolean;
begin
  result := true;
end;
Fehler: [DCC Fehler] Unit1.pas(143): E2010 Inkompatible Typen: 'Boolean' und 'Integer'

Wenn ich die Funktion aus dem Quelltext herausnheme, funktioniert alles, sollte also wirklich hieran liegen.
Warum um alles in der Welt läst sich keine Boolean konstante zurückgeben??

danke im Voraus...

[edit=MrSpock]Titel geändert. Mfg, MrSpock[/edit]

Helmi 16. Apr 2009 20:14

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Hallo,

ändere doch bitte den Titel deines Threads. Solche Kraftausdrücke ("blödes...") werden hier nicht gerne gesehen.

Dein Problem betreffend: Zeig doch mal mehr Code. Wo und wie wird diese function aufgerufen?

Nebenbei bemerkt - die function macht ja ned so viel Sinn, oder?

mkinzler 16. Apr 2009 20:15

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
An diesem Code liegt es nicht direkt. Den für sich sollte der funktionieren.

BullsEye 16. Apr 2009 20:15

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Delphi-Quellcode:
[b]function returntrue():boolean;
begin
  result := true;
end;[/b]

procedure TForm1.Button1Click(Sender: TObject);

begin
  if returntrue = false then label1.Caption := 'false';
  if returntrue = true then label1.Caption := 'true';
end;
Funktioniert bei mir einwandfrei.Ist returntrue evlt schon anders belegt?

Teekeks 16. Apr 2009 20:16

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
bei mir gehts...
Ist ja auch wirklich unlogisch... wie verwendest du die function?

Die Muhkuh 16. Apr 2009 20:16

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Hast Du irgendwo eine Variable true definiert?

@ BullsEye

Bitte nicht auf true / false überprüfen!

Teekeks 16. Apr 2009 20:18

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
auf false darf man doch... soweit ich weiß sollte man nur nicht auf true testen...

Die Muhkuh 16. Apr 2009 20:19

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Man sollte generell nicht auf boolean prüfen.

Spielt jetzt hier aber auch keine Rolle.

mkinzler 16. Apr 2009 20:20

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Ist so oder so unnötig, da ein Vergleich einen Boolean zurückliefert

Hobby-Programmierer 16. Apr 2009 20:20

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

begin
  if not returntrue then label1.Caption := 'false';
  if returntrue then label1.Caption := 'true';
end;
oder mit Stringausgabe
Delphi-Quellcode:
Label1.Caption:= BoolToStr(returntrue());

mr_emre_d 16. Apr 2009 20:24

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Meine Antwort kann jetzt dem Einen oder Anderen ein wenig komisch vorkommen;
In Delphi kommt es öfters vor, dass die rote Stelle (Fehler) manchmal nicht >>an der richtigen Stelle<< ist!
Du musst dann halt wo anders suchen!

MfG

Die Muhkuh 16. Apr 2009 20:25

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Der Fehler kommt beim Kompilieren und nicht von Error Insight.

BullsEye 16. Apr 2009 20:26

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von Die Muhkuh
@ BullsEye

Bitte nicht auf true / false überprüfen!


Ich weiß.(THX Luckie) Diente auch nur zur Ausgabe. Da viel mir gerade nichts besseres ein :mrgreen:

mr_emre_d 16. Apr 2009 20:28

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von Die Muhkuh
Der Fehler kommt beim Kompilieren und nicht von Error Insight.

Error Insight ?
Meine Antwort bezogs sich auf das Auftauchen von Fehlern beim Kompilieren !

MfG

Hobby-Programmierer 16. Apr 2009 20:28

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Jap, kann ich bestätigen! Kam schon vor das die davor aufgerufene Funktion der Verursacher war.

simlei 16. Apr 2009 20:42

...keine boolean Rückgabe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Okay, hier der gesamte Code...

Wie gesagt, ohne die Funktion lässt es sich compilieren. Die Funktion selbst macht natürlich wenig sinn, soll aber das Problem isoliert zeigen...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, mshtml_tlb2;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  doc: IHTMLDocument2;
  JSParam1, JSParam2, JSParam3, JSParam4, JSParam5, JSParam6, JSParam7: String;

implementation

{$R *.dfm}

function ReplaceText(const S,ReplacePiece,ReplaceWith: String):String;
Var
  Position: Integer;
TempStr: String;
begin
  Position := Pos(ReplacePiece,S);
  if Position > 0 then Begin
  TempStr := S;
  Delete(TempStr,1,Position-1+Length(ReplacePiece));
  Result :=
  Copy(S,1,Position-1)+ReplaceWith+ReplaceText(TempStr,ReplacePiece,ReplaceWith)
  End else Result := S;
end;

procedure delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
  stop := gettickcount;
  application.processmessages;
  until (stop - start ) >= msec;
end;

function deleteLineBreaks(const S: string): string;
var
   Source, SourceEnd: PChar;
begin
   Source := Pointer(S) ;
   SourceEnd := Source + Length(S) ;
   while Source < SourceEnd do
   begin
     case Source^ of
       #10: Source^ := #32;
       #13: Source^ := #32;
     end;
     Inc(Source) ;
   end;
   Result := S;
End;

procedure script(S: string);
  { Calls JavaScript Foo() function }
var
  Doc: IHTMLDocument2;     // current HTML document
  HTMLWindow: IHTMLWindow2; // parent window of current HTML document
  JSFn: string;            // stores JavaScipt function call
begin
  // Get reference to current document
  Doc := Form1.WebBrowser1.Document as IHTMLDocument2;
  if not Assigned(Doc) then
    Exit;
  // Get parent window of current document
  HTMLWindow := Doc.parentWindow;
  if not Assigned(HTMLWindow) then begin
    Exit; ShowMessage('not assigned'); end;
  // Run JavaScript
  try
    JSFn := S; // build function call
    if (Length(JSFn) > 0) and (JSFn[1] <> '/') Then HTMLWindow.execScript(JSFn, 'JavaScript'); // execute function
  except
    // handle exception in case JavaScript fails to run
  end;
end;

procedure exeJS(filename: String; doc: IHTMLDocument2);
var myJSFile: TStringList;
    i: integer;
    line, thisline: String;
begin
  myJSFile := TStringList.Create;
  myJSFile.LoadFromFile(filename);
  i:=0;
  while i<myJSFile.Count do
  begin
    thisline := myJSFile[i];
    if (not ((Length(thisline) > 0) and (thisline[1] <> '/'))) then
    begin
      myJSFile.Delete(i);
      dec(i);
    end;
    inc(i);
  end;
  line := deleteLineBreaks(myJSFile.Text);
  line := ReplaceText(line, '%1', JSParam1); line := ReplaceText(line, '%2', JSParam2); line := ReplaceText(line, '%3', JSParam3); line := ReplaceText(line, '%4', JSParam4); line := ReplaceText(line, '%5', JSParam5); line := ReplaceText(line, '%6', JSParam6); line := ReplaceText(line, '%7', JSParam7);
  if(form1.CheckBox1.Checked) then InputBox('InputBox', 'sourceLine', line);
  script(line);
  {for i := 0 to myJSFile.Count - 1 do
  begin
    line := myJSFile[i];
    script(line);
  end;}
end;

procedure exeJSLine(line: String; doc: IHTMLDocument2);
begin
  script(line);
end;

function findElementName(document:IHTMLDocument2; name: string): Olevariant;
var items: OleVariant;
    i: integer;
begin
  result := null;
  result := document.all.item(name, 0);
end;

function returntrue():boolean;
begin
  result := true;
end;

procedure waitForBrowser();
begin
  Delay(500);
  While(Form1.WebBrowser1.Busy) do Delay(1);
end;

procedure navigate(URI: String);
begin
  Form1.WebBrowser1.Navigate(URI);
  waitForBrowser();
  doc := Form1.WebBrowser1.Document as IHTMLDocument2;
end;

procedure logIntoOgame();
begin
navigate('www.ogame.de');
exeJS('JS\loginscript.js', doc);
waitForBrowser();
end;

procedure changeToPlanet(gala, system, plani: integer; name: String);
begin
  JSParam1 := IntTostr(gala);
  JSParam2 := IntTostr(system);
  JSParam3 := IntTostr(plani);
  JSParam4 := name;
  exeJS('JS/changetoplanet.js', doc);
  waitForBrowser;
end;

procedure gotoOverview();
begin
  JSParam1 := '"overview"';
  JSParam2 := '""';
  exeJS('JS/gotoPage.js', doc);
  waitForBrowser;
end;

procedure gotoFleet();
begin
  JSParam1 := '"flotten1"';
  JSParam2 := '"Flotte"';
  exeJS('JS/gotoPage.js', doc);
  waitForBrowser;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  logIntoOgame();
  changeToPlanet(8,278,8,'"Kolonie"');
  gotoFleet;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  exeJS('JS/markshipdepart.js', doc);
end;

procedure TForm1.FormCreate(Sender: TObject);
var myPos: TPoint;
    myControl: TControl;
begin

end;

end.

Hobby-Programmierer 16. Apr 2009 20:46

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Warum übergibst Du an die Funktion keinen Parameter?

Fussball-Robby 16. Apr 2009 20:48

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Ein Blick in die eingebundene Unit mshtml_tlb2 oder durch das Suchen der Deklaration von true(Strg + Klick drauf) ergibt folgendes:
Delphi-Quellcode:
const
  True = $00000001;
  False = $00000000;
True ist also als Integer deklariert, daher der Fehler.

Gruß

Teekeks 16. Apr 2009 20:50

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von Hobby-Programmierer
Warum übergibst Du an die Funktion keinen Parameter?

Warum sollte er?
Und: was für parameter deiner Meinung nach?

Fussball-Robby 16. Apr 2009 20:53

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von mkinzler
Ich hoffe mal, das ist soll kein Bot werden.

Das hoffe ich auch. Achja, in den Javascripts sind Login-Daten zu sehen, die solltest du besser wieder rausnehmen.

Hobby-Programmierer 16. Apr 2009 20:54

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von Teekeks
Zitat:

Zitat von Hobby-Programmierer
Warum übergibst Du an die Funktion keinen Parameter?

Warum sollte er?
Und: was für parameter deiner Meinung nach?

Funktionsparameter
Warum sollte man ne Funktion mit Klammern schreiben wenn man diese net braucht!
Delphi-Quellcode:
function returntrue:boolean;
begin
  result := true;
end;
wäre doch das gleiche oder net?

mkinzler 16. Apr 2009 20:55

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Diese sind aber nicht verboten und werden vom Kompiler ohne Probleme geschluckt.

Hobby-Programmierer 16. Apr 2009 20:58

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von mkinzler
Diese sind aber nicht verboten und werden vom Kompiler ohne Probleme geschluckt.

Ich habe auch nicht gesagt das darauf die Todesstrafe steht :roll: Finde es nur unnütz und würde mich zumindest irritieren.

alzaimar 16. Apr 2009 21:04

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von Hobby-Programmierer
Warum sollte man ne Funktion mit Klammern schreiben wenn man diese net braucht!
Delphi-Quellcode:
function returntrue:boolean;
begin
  result := true;
end;
wäre doch das gleiche oder net?

Ja, aber im Aufruf nicht von einer Variablen zu unterscheiden. Daher gibt es Ästheten, die parameterlosen Methoden ein '()' verpassen, damit der Code lesbarer und intuitiv verständlicher wird ('Klar, is ne Methode').

Namenloser 16. Apr 2009 21:05

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Zitat:

Zitat von Hobby-Programmierer
Zitat:

Zitat von mkinzler
Diese sind aber nicht verboten und werden vom Kompiler ohne Probleme geschluckt.

Ich habe auch nicht gesagt das darauf die Todesstrafe steht :roll:

In alten delphiversionen schon :angel:

Daniel 16. Apr 2009 21:07

Re: Blödes MistDelphi.... keine boolean Rückgabe
 
Ich habe eben die AGB des Online-Spiels gelesen, mit dem Du da interagieren willst. Diese untersagen Dein Vorgehen ausdrücklich. Aus diesem Grund mache ich hier zu.

* closed *



Die Diskussion über Funktionsparameter kann gern in einem neuen Thema fortgeführt werden. :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr.

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