scroll animation mit javascript?
 window.onscroll = function() {scrollFunction()};
                
                function scrollFunction() {
                  if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
                    document.getElementById("pic").style.marginTop = "0px";
                    document.getElementById("pic").style.marginLeft = "900px";
                    document.getElementById("pic").style.width = "100px";
                    document.getElementById("pic").style.height = "100px";
                    document.getElementById("h1").style.width = "1003px";
                    document.getElementById("h1").style.height = "60px";
                    document.getElementById("h1").style.marginTop = "0px";
                    document.getElementById("h1").style.textAlign = "center";
                  } else {
                    document.getElementById("pic").style.marginTop = "110px";
                    document.getElementById("pic").style.marginLeft = "800px";
                    document.getElementById("pic").style.width = "200px";
                    document.getElementById("pic").style.height = "200px";
                    document.getElementById("h1").style.width = "250px";
                    document.getElementById("h1").style.height = "50px";
                    document.getElementById("h1").style.marginTop = "195px";
                  }

 Hi, kann mir vielleicht jemand helfen die scroll animation so zu gestalten, dass sie nicht so abrupt geschieht ?

..oder gibt es eine bessere Lösung für mein Vorhaben, bzw wie könnte man es einfacher coden ?

Sry, bin totaler Anfänger =)

Computer, HTML, programmieren, CSS, JavaScript, Webdesign
(Neo)Vim Coc-extension wirft einen Fehler?

Guten Abend miteinander,

ich wollte fragen, ob hier vielleicht jemand (Neo)Vim mit der Coc-extension nutzt und mir bei einem Problem helfen kann?

Und zwar wollte ich einen language server hinzufügen, damit ich autocompletion für C++ nutzen kann. Ich habe also meine coc-settings.json erzeugt und geöffnet, sie war (logischerweise) komplett leer und ich habe sie auch am richtigen Speicherort erstellt, denn sie lässt sich aus Vim heraus mit :CocConfig öffnen.

Nun bin ich der Anleitung gefolgt,

:CocConfig, which will open main config file ~/.config/nvim/coc-settings.json
(empty for new installation). Add empty JSON object (like
{})

In die geschweiften Klammern habe ich nun den ccls language server eingefügt

https://github.com/neoclide/coc.nvim/wiki/Language-servers#ccobjective-c

Leider meldet sich beim öffnen von nvim jedoch immer eine Fehlermeldung und zwar:

Error detected while processing /home/xyz/.config/nvim/coc-settings.json:                                                                                                   
line   1:                                                                                                                                   E492: Not an editor command: { line  10:                                                                                                                                  E492: Not an editor command:        }   line  11:                                                                                                                                  E492: Not an editor command:      }

... und noch ein paar gleiche Zeilen mehr, kurzum er hat was gegen die geschweiften Klammern bzw das .json Format?

Ich weiß leider nicht was ich falsch gemacht habe und wie ich es löse, kann mir jemand helfen?

Ich freue mich über jede Antwort!

Computer, Technik, Linux, programmieren, Cplusplus, Shell
Warum funktioniert das hier nicht?

Hi. Ich bin am programmieren in Processing und bekomme den Fehler "Expecting EOF, found if" und weiß nicht warum. Kann mir jemand helfen?

//Variablen des Balles
int xball = 400;
int yball = 300;
int xspeed = 5;
int yspeed = 5;

//Variabeln des Paddels
int xrect = mouseX;
int yrect = 500;

//Variabeln für die Leben 
int leben = 3;
int score = 0;

//Variabeln für die Bricks
int[] xBrick = new int[100];
int[] yBrick = new int[100];
boolean[] activeBrick = new boolean[70];

//Spielfeld und Farbe des Hintergrundes
void setup() {
 size(800, 600);
 background(0);
  
//Bricks auf aktiv setzen
for(int i=0;i<60;i++){
 activeBrick[i] = true;
 }
}

//Zeichnen von Bricks,Paddel und Ball
void draw() {
 background(0);
 int xrect = mouseX;
  
   for(int i=0;i<10;i++){
   for(int k=0;k<6;k++){
   xBrick[i] = i*80;
   yBrick[k] = k*30; 
   }
   }
   for (int i = 0; i < 10; i++) {
  for (int k = 0; k < 6; k++) {
   if(activeBrick[k*10+i] == true){
     fill(#6d00cc);
   rect(80*i, 30*k, 60, 15);
   }
  }
 }
   
   rect(mouseX, yrect, 80, 20);
   fill(#FFFF00);
   ellipse(xball, yball, 30, 30);
   stroke(50);
   strokeWeight(3);
   
//Ball prallt von den Wänden ab
   if (xball > 800){
    xspeed = -xspeed;
   }
    
    if (xball < 0) {
    xspeed = -xspeed;
    }
    
    
   if (yball < 0) {
   yspeed = -yspeed;
   }
    
 xball = xball + xspeed;
 yball = yball + yspeed;

//wenn der ball nicht im spielfeld ist, ihn respawnen
 if (yball > 600) {
   delay(2000);
   xball = 400;
   yball = 300;

//Ein leben abziehen,wenn der Ball aus dem Feld ist
   leben = leben-1;
 }

//Abprallen von Ball an Paddle 
  if (xball > xrect && xball < xrect+80 && yball > yrect && yball < yrect+20) {
  yspeed=-yspeed;
}
 }
 if (score==60){
  stroke(255);
  textSize(128);
  text("You win");
  stop();
 }
println(leben);
 if (leben==0){
  background(#00CD00);
  stroke(255);
  textSize(128);
  text("You Lose",50,250);
  stop();
 }
 drawBricks();
 checkBrickCollision();
}
  void drawBricks(){
   for(int i=0;i<10;i++){
   for(int k=0;k<7;k++){
   xBrick[i] = i*80;
   yBrick[k] = k*30; 
   }
   }
   
   for (int i = 0; i < 10; i++) {
  for (int k = 0; k < 7; k++) {
   if(activeBrick[k*10+i] == true){
   rect(xBrick[i],yBrick[k],80,20);
   fill(#FFFF00);
   }
  }
 }
}

//Zusammenstoß von Ball und Bricks
    void checkBrickCollision(){  
     
  for (int i=0;i<10;i++){
   for(int k=0;k<7;k++){
    if(xball > xBrick[i] && xball < xBrick[i]+60 && yball > yBrick[k] && yball< yBrick[k]+20 && activeBrick[k*10+i] == true) {
    activeBrick[k*10+i] = false;
  //Brick auf inaktive setzen
  activeBrick[k*10+i]=false;
  score++
    //y-Richtung des Balls ändern
    yspeed=-yspeed;
    }
   }
  }
 }
programmieren, Processing
Einfache Datenbanktabellen: Würdet ihr über ID oder Bezeichnung in die Tabelle gehen?

Beispiel: Es gibt eine Tabelle Abteilungen, die im Wesentlichen nur aus ID + Abteilungsname besteht

ID  Name
123 Produktion 
124 Versand
128 IT
...

Wenn ihr die Mitarbeitertabelle befüllen wollte, in der es einen Fremdschlüssel ABTEILUNG_ID gibt, würdet ihr im Quelltext die IDs direkt als Konstanten anlegen und verwenden, also

insert into MA (... ABTEILUNG_ID...) values (...' + constProduktion_ID + '...)

oder würdet ihr die ID anhand des Namens lesen

insert  into MA (...ABTEILUNG_ID...) values (...(select abt.ID from ABTEILUNG abt where abt.Name = ''Produktion'')...)

Die erste Variante hat den Nachteil, dass man die ID nicht ändern darf. Löschte man beispielsweise den Eintrag für Produktion und fügte ihn erneut ein, würde die Abteilung nicht mehr unter der alten ID gefunden werden. Man müsste die Konstante für die ID im Quelltext anpassen.

Die zweite Variante hat den Nachteil, dass der Name sich nicht ändern darf, weil der Subselect sonst ins Leere laufen würde.

Irgendwie erscheinen mir beide Varianten suboptimal, aber die erste sogar besser, weil die ID sich nicht so häufig ändern dürfte. Programmiertechnisch fühlt es sich dennoch falsch an, die IDs als Konstanten zu speichern und direkt ins Fremdschlüsselfeld einzutragen.

Bei den Abteilungen mag das vielleicht unkritisch sein, weil man normalerweise eine Oberfläche mit einer Auswahlliste an Abteilungen anbietet, die in der Datenbank zur Verfügung stehen.
Was ist aber mit anderen Feldern, die unterschiedliche Stati oder Bereiche darstellen oder wenn Einträge erfasst werden, die Standardwerte verwenden und nicht auf einer Eingabe aus einer Benutzeroberfläche her rühren?

Beispielsweise soll in einer Applikation für die Produktion automatisch die Abteilung auf 123 (Produktion) gesetzt werden.

Hat jemand von euch einen Rat?

Computer, Technik, SQL, programmieren, Datenbank, Technologie
Python - tkinter text eingabe in variable?

Hallo,

ich habe folgendes programmiert:

import tkinter as tk
import os


root = tk.Tk()
root.geometry("400x240")


def encrypt(filename):
    to_encrypt = open(filename, "rb").read()
    size = len(to_encrypt)
    key = os.urandom(size)
    with open(filename + ".lqk", "wb") as key_out:
        key_out.write(key)
    encrypted = bytes(a ^ b for (a, b) in zip(to_encrypt, key))
    with open(filename, "wb") as encrypted_out:
        encrypted_out.write(encrypted)  
    filename = textExample.get(1.0, tk.END+"-1c")
    encrypt(filename)




def decrypt(filename, key):
    file = open(filename, "rb").read()
    key = open(key, "rb").read()
    decrypted = bytes(a ^ b for (a, b) in zip(file, key))
    with open(filename, "wb") as decrypted_out:
        decrypted_out.write(decrypted)
    fileTest = filename + ".lqk"
    try:
        os.remove(fileTest)
    except OSError as e:
        print(e)
    else:
        print("Datei erfolgreich gelöscht!")
    filename = textExample.get(1.0, tk.END+"-1c")
    decrypt(filename, filename + ".lqk")
    
    


textExample=tk.Text(root, height=10)
textExample.pack()
btnEncrypt=tk.Button(root, height=1, width=10, text="Encrypt", 
                    command=encrypt)
btnDecrypt=tk.Button(root, height=1, width=10, text="Decrypt", 
                    command=decrypt)


btnEncrypt.pack()
btnDecrypt.pack()


root.mainloop()

Nur leider funktioniert dies nicht. In der Debugging Console bekomme ich folgende Fehlermeldung:

Bei der Encrypt Funktion:

PS C:\Users\elias\Desktop\Python>  c:; cd 'c:\Users\elias\Desktop\Python'; & 'C:\Users\elias\AppData\Local\Programs\Python\Python310\python.exe' 'c:\Users\elias\.vscode\extensions\ms-python.python-2021.12.1559732655\pythonFiles\lib\python\debugpy\launcher' '52518' '--' 'c:\Users\elias\Desktop\Python\main.py'
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\elias\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
TypeError: encrypt() missing 1 required positional argument: 'filename'


Decrypt Funktion:

Traceback (most recent call last):
  File "C:\Users\elias\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
TypeError: decrypt() missing 2 required positional arguments: 'filename' and 'key'      


Wie kann ich das Problem jetzt lösen?

Danke im Vorraus!

VG!

programmieren, Python, Python 3, Tkinter

Meistgelesene Beiträge zum Thema Programmieren