Delphi-PRAXiS

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:

Teekeks 24. Jun 2009 14:07

Re: Nicht erklärbare AV
 
Die Taste geht algm. nicht.
Wie verstellt man das Tastatur Layout der Tastatur?
Ich habs nicht gefunden...
ps.: ich hab hier XP oben.
pps.: die betreffende Taste ist bei mir rechts oben neben F12 und dem ^ (welches hier auf der Betreffenden Taste liegt ^^).
roter Kasten:

Zitat:

Zitat von sirius
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:

:mrgreen:

quendolineDD 24. Jun 2009 14:09

Re: Nicht erklärbare AV
 
Gab da ein kürzel mit Strg + Alt + Shift oder so. Oder halt in der Taskleiste hast du unten Rechts das DE, dort kannst du das verstellen bzw. irgendwo in der Systemsteuerung. Hab hier nur Vista zum schauen und das bringt dir ja herzlich wenig ;-)

Teekeks 24. Jun 2009 14:11

Re: Nicht erklärbare AV
 
Zitat:

Zitat von quendolineDD
Gab da ein kürzel mit Strg + Alt + Shift oder so. Oder halt in der Taskleiste hast du unten Rechts das DE, dort kannst du das verstellen bzw. irgendwo in der Systemsteuerung. Hab hier nur Vista zum schauen und das bringt dir ja herzlich wenig ;-)

Weder ist das "DE" in der task-Leiste nocht geht dein Kürzel...

himitsu 24. Jun 2009 14:16

Re: Nicht erklärbare AV
 
wo man das ändern kann ... gute Frage :gruebel:

irgendwo in der Systemsteuerung vermutlic, aber Systemsteuerung\Tastatur kannst du knicken, da isses nicht drin :lol:

hast du in der Startleiste etwas vom MIME drin?
ich glaub per Standard ist da eine Leiste eingeblendet "Eingabegebietsschemaleiste",
darin sollte sich was finden lassen.

Und das Kürzel geht bei mir auch nicht (hatte es beim Windows-Setup gleich abgestellt, da ich s.B. LStrg+LShift ausversehn mal drücke :wall: )


PS: Startmenü\Programme\Zubehör\Eingabehilfen\Bildschi rmtastatur

[edit]
IME und nicht MIME :wall:

Teekeks 24. Jun 2009 14:52

Re: Nicht erklärbare AV
 
Zitat:

Zitat von himitsu
wo man das ändern kann ... gute Frage :gruebel:

irgendwo in der Systemsteuerung vermutlic, aber Systemsteuerung\Tastatur kannst du knicken, da isses nicht drin :lol:

hast du in der Startleiste etwas vom MIME drin?
ich glaub per Standard ist da eine Leiste eingeblendet "Eingabegebietsschemaleiste",
darin sollte sich was finden lassen.

Und das Kürzel geht bei mir auch nicht (hatte es beim Windows-Setup gleich abgestellt, da ich s.B. LStrg+LShift ausversehn mal drücke :wall: )


PS: Startmenü\Programme\Zubehör\Eingabehilfen\Bildschi rmtastatur

Cooles Tool.
Was soll "MIME" sein?
gibts bei mir nicht...

Zwoetzen 24. Jun 2009 16:39

Re: Nicht erklärbare AV
 
Man sollte aber auch beachten, dass so gut wie alle Sonderzeichen auf der englischen Tastatur woanders liegen, somit geht dann jedes mal die Suche los, wo denn die ( war ^^
(Ein weiterer Nachteil könnte sein, dass ä,ö,ü etc überhaupt nicht mehr vorhanden sind. Auch das sollte man nicht vergessen ;))

Deshalb wohl doch eher Bildschirmtastatur oder Copy&Paste :mrgreen:

sirius 24. Jun 2009 16:41

Re: Nicht erklärbare AV
 
Wir sind doch Programmierer :duck:
Weshalb nicht ein Programm schreiben, was einen Shortcut überwacht und dann entsprechend reagiert. Oder gleich in die IDE einbinden.

himitsu 24. Jun 2009 16:45

Re: Nicht erklärbare AV
 
Zitat:

Zitat von sirius
Wir sind doch Programmierer :duck:

MIME ... ich meinte IME :wall: ... dat, wozu auch dieses ganze Eingabegebietsschemazeugs gehört.


Genau ... gab's hier nicht vor 'ner Weile einen, welcher eine Taste eines Schlepptops blockieren wollte?
Hier braucht man ja nur den anderen Weg, eine andere Taste einfach umleiten ... z.B. ein globaler Tastaturhook auf F1 und dieses nach < umgeleitet und Shift+F1 nach > ... vorallem da diese Taste sonst eh keiner nutzt :nerd:

Teekeks 25. Jun 2009 10:27

Re: Nicht erklärbare AV
 
Ich benutze sie schon öfters...
Ärgerlich wäre allerdings F9 ^^
Ich hab jetzt die Bildschirmtastatur... geht ganz gut.
Was passiert den bei Shift+F1??

Umstellen werde ich glaube ich nichts, ich muss den Scheptop ja Sonntag wieder zurück geben (ist nicht meiner, hab ich mir nur für die Zeit meines Praktikums ausgeliehen).

gruß Teekeks

Satty67 25. Jun 2009 11:52

Re: Nicht erklärbare AV
 
Zitat:

Zitat von Teekeks
Was passiert den bei Shift+F1?

Bei Delphi... nichts?

Bei OpenOffice z.B. wird die Sprechblasenhilfe für Schaltflächen eingeschaltet.

Teekeks 25. Jun 2009 13:42

Re: Nicht erklärbare AV
 
Ich wollte schon sagen. ich wusste nämlich nicht was darauf bei Delphi/Lazarus sein soll...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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