Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Nicht erklärbare AV (https://www.delphipraxis.net/136147-nicht-erklaerbare-av.html)

Teekeks 24. Jun 2009 11:19


Nicht erklärbare AV
 
Hallo!
Ich habe wiedereinmal ein Problem:
Delphi-Quellcode:
procedure Scan(TheLine:string);
var x:integer;
begin
  SetLength(Tokens,0);
  X:=1;
  while not (x=Length(TheLine)-1) do
  begin
    if TheLine[x] in ['+','-','*','/','(',')'] then
    begin
      SetLength(Tokens,Length(Tokens)+1);
      Tokens[High(Tokens)]:=TheLine[x];
    end else
    if TheLine[x] in ['a'..'z','A'..'Z'] then// Hier wird eine External AV ausgelößt...
    begin
      SetLength(Tokens,Length(Tokens)+1);
      Tokens[High(Tokens)]:=Tokens[High(Tokens)]+TheLine[x];
      while TheLine[x+1] in ['a'..'z','A'..'Z'] do
      begin
        Inc(X);
        Tokens[High(Tokens)]:=Tokens[High(Tokens)]+TheLine[x];
      end;
    end else
    if TheLine[x] in ['0'..'9'] then
    begin
      SetLength(Tokens,Length(Tokens)+1);
      Tokens[High(Tokens)]:=Tokens[High(Tokens)]+TheLine[x];
      while TheLine[x+1] in ['0'..'9'] do
      begin
        Inc(X);
        Tokens[High(Tokens)]:=Tokens[High(Tokens)]+TheLine[x];
      end;
    end;
    Inc(X);
  end;
end;

// Hier wird "Tokens" ausgegeben:
procedure DoOutputTokens;
var x:integer;
begin
  WriteLn('*******************');
  WriteLn('NextLine:');
  for x:=0 to High(Tokens) do
    WriteLn('Token: '+Tokens[x]);
end;

// Aufgerufen wird so:
  while not EOF(Datei) do
  begin
    ReadLn(Datei,ActLine);
    Scan(ActLine);
    DoOutPutTokens;
  end;
Angezeigt bekomme ich das hier:
Zitat:

******************
NextLine:
Token: Hallo
Token: 712
Token: +
Die Zu behandelnde Datei siet so aus:
Zitat:

Hallo=712+sd
n+od +df
Ich verstehe nicht was ich falsch gemacht habe...
Wenn an dieser Stelle eine AV kommt, hätte eigentlich noch nichts Ausgegeben werden dürfen...

Wisst ihr warum das so ist???

gruß Teekeks

himitsu 24. Jun 2009 11:29

Re: Nicht erklärbare AV
 
Delphi-Quellcode:
while TheLine[x+1] in ['a'..'z','A'..'Z'] do

while TheLine[x+1] in ['0'..'9'] do
diese beiden Schleifen können dafür sorgen, daß x aus dem gültigen Bereich rausläuft

probier mal dieses (durch obrige Schleifen kann es passieren, daß genau der EINE austrittspunkt übersprungen wird)
Delphi-Quellcode:
while x < Length(TheLine) do
und es könnte nix schaden, wenn du in oben genannte Schleifen auch noch eine Length-Abfrage mit reinmachst.

Teekeks 24. Jun 2009 12:19

Re: Nicht erklärbare AV
 
THX!
Jetzt geht es...
Bei mir gehen nur die größer und kleiner als Tasten nicht( sch...limmer Laptop), deswegen wollte ich das mit = lösen ^^
Ich schein aber nicht drumrum zu kommen...

gruß Teekeks

himitsu 24. Jun 2009 12:24

Re: Nicht erklärbare AV
 
nimm dann doch einfach ein anderes Tastaturlayout ... da gibt's Welche, wo diese Zeichen auf anderen Tasten liegen :)

oder Copy&Paste :angel:
Zitat:

< >
bzw. Alt+060 = < und Alt+062 (Zahlen im Ziffernblock, aber k.A. wie einfach das mit'm Schlepptop geht)

Satty67 24. Jun 2009 12:27

Re: Nicht erklärbare AV
 
[spam]
Hier ein paar Operatoren:

{ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< }
{ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> }

einfach per Copy&Paste in den Quelltext legen und bei Bedarf einzelnen Operator markieren und mit der Mouse an die richtige Stelle ziehen.

Das ist nur ein Schnupper-Angebot, weitere Operatoren sind kostenpflichtig!
[/spam] Mist, himitsu war schneller und hat meinem Spam-Post den Sinn genommen

Teekeks 24. Jun 2009 12:32

Re: Nicht erklärbare AV
 
@satty: Ich würde gerne ein All Inclusiv angebot nehmen....
Was kostet das??

himitsu 24. Jun 2009 13:35

Re: Nicht erklärbare AV
 
Bei mir nichtmal einen Euro ... nur 33ct pro Zeichen. :angel:

PS: Hier noch ein paar ||||||||||| (die sind ja meißt auch mit auf dieser Taste)

Wie geagt, probier einfach mal z.B. das amerikanische Tastaturlayout (wenn du das deutsche drin hast, oder andersrum), mußt nur aufpassen, daß dann zusätzlich noch Y und Z vertauscht sind.

Dann sind diese Zeichen da Rechts irgendwo, bei Komma und Co.

sirius 24. Jun 2009 13:50

Re: Nicht erklärbare AV
 
Zitat:

Zitat von himitsu
PS: Hier noch ein paar ||||||||||| (die sind ja meißt auch mit auf dieser Taste)

Wusste gar nicht, dass man diesen Operator jetzt auch schon in Delphi benötigt. Bisher war Delphi doch sehr freundlich bzgl. des deutschen Tastaturlayouts.

himitsu 24. Jun 2009 14:01

Re: Nicht erklärbare AV
 
Zitat:

Zitat von sirius
Wusste gar nicht, dass man diesen Operator jetzt auch schon in Delphi benötigt. Bisher war Delphi doch sehr freundlich bzgl. des deutschen Tastaturlayouts.

hast du schonmal mit einem TOpenDialog oder seinen Freunden gearbeitet?

sirius 24. Jun 2009 14:04

Re: Nicht erklärbare AV
 
ok. aber zur Verteidigung ist noc zu sagen, dass dieses Verhalten nicht durch Delphi, sondern durch Windows veranlasst wird.

Edit: ausserdem hat der Nutzer in meinen Programmen eh nix zu sagen, ergo gibts auch keine Dialoge, meine Programme sind Monologe :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Seite 1 von 3  1 23      

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