Manfred.Becker
-
Gesamte Inhalte
148 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Manfred.Becker
-
-
-
das leuchtet mit leider nur teilweise ein.ich brauch ja nicht nur ne ausgabe sondern eine variable, die ich danach weiterverwenden kann. versteh ich das richtig? in diesem fall würde ich doch nur die ausgabe bekommen oder?
Beziehst du dich auf mein Beispiel?
Dort wird auch eine Variable (subString) verwendet. Reicht das nicht?
-
Hi sternchen_1709,
dein subString ist ein char* !!!!
Damit kannst du höchstens irgendwohin verweisen. Eine Zeichenkette kannst du damit nicht speichern.
Wenn es lediglich um die Zeichenfolge ab dem zweiten Zeichen geht, dann darfst du einfach mit dem +Operator drauf zugreifen.
Benötigst du aber wirklich eine eigene Variable, dann muss das ein char-Array sein, das mit Kopierfunktionen befüllt wird.
Hier ein paar Beispiele:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
int main (void)
{
const char * name = "1234";
char subString[80];
printf("%d\n",atoi(name)); // Ausgabe: 1234
printf("%d\n",atoi(name+1)); // Ausgabe: 234
strcpy(subString,name+1);
printf("%s\n",subString); // Ausgabe 234
strncpy(subString,name+1,2);
subString[2]=0; // abschliessendes 0
printf("%s\n",subString); // Ausgabe 23
getch();
return 0;
}
[/PHP] -
Hi,
kontrolliere bitte mal dei Eigenschaft InputLen des MSComm-Controls.
Die muss unbedingt auf 1 gesetzt sein!
Sollte sie grösser 1 sein z.b. 16, dann werden immer nur Blockweise Daten gelesen. Wenns dann einen Rest gibt, kommt's nicht zum OnComm-Ereignis!
Hier die abgespeckte OnComm-Funktion:
Private Sub comm_scanner_OnComm()
Dim BytesLeft As Integer
Dim strIn As String
Dim scannerstring As String
BytesLeft = comm_scanner.InBufferCount
scannerstring = ""
Do While BytesLeft > 0
strIn = comm_scanner.Input
scannerstring = scannerstring & strIn
DoEvents
BytesLeft = comm_scanner.InBufferCount
Loop
logfile.WriteLog scannerstring, ".\scannerstring.txt"
End Sub
[/PHP] -
Hi jasso,
ich selbst hatte noch mit keinem Betriebsystem jemals Probleme mit VB6 und der Ser. Schnittstelle!
Höchstwahrscheinlich ist eine unsaubere Programmierung der OnComm-Funktion die Ursache.
Hast du daran gedacht, dass während du Daten aus der seriellen Schnittstelle liest, noch weitere Daten hinzukommen können?
Deshalb sollte die OnComm-Funktion etwa so aussehen:
Private Sub MSComm1_OnComm()
Dim ReceiveData(1024) As Integer
Dim BytesLeft As Integer
Dim i As Integer
Dim nBytes As Integer
Dim ch As Byte
Dim strIn As String
nBytes = 0
BytesLeft = MSComm1.InBufferCount
Do While BytesLeft > 0
strIn = MSComm1.Input
nBytes = nBytes + 1
If strIn <> "" Then
ReceiveData(nBytes) = AscB(strIn)
Else
ReceiveData(nBytes) = 0
End If
DoEvents
BytesLeft = MSComm1.InBufferCount
Loop
...
End Sub
[/PHP]Wichtig dabei ist die Do While BytesLeft > 0 Schleife!
Poste doch mal deine OnComm-Funktion...
-
Hi bobzta,
mit mget bekommst du nur die Files aus dem angegebenen Ordner kopiert, nicht aber die aus weiteren Unterordnern!
Ich glaube dafür gibt's kein spezielles ftp Kommando. Allerdings könntest du es mit dem take-Kommando versuchen:
take-Kommando:
Durch die Eingabe von >take datei< werden alle FTP-Kommandos, die in datei vorhanden sind, ausgeführt. Auf diese Weise kann eine Stapelanwendung definiert werden. Dieses Kommando eignet sich insbesondere zur Übertragung mehrerer Dateien, falls der Host keine Mehrfachübertragung durch Platzhalter erlaubt (VSP-Rechner).
Quelle: ftp-befehle
-
Hi kills,
schau dir mal das hier an:
falls es nicht das ist was du suchst, dann suche hier:
oder hier:
-
Hi OdagTheCrow,
also das mit der IP-Änderung wird so nicht funktionieren. Man kann zwar mit ipconfig eine neue IP-Adresse zuweisen lassen, allerdings nur für den gesamten Rechner, aber nicht nur für die DOS-BOX!
Es gibt Tools (VMWare bzw. VirtualPC ) die emulieren einen Rechner im Rechner. Willst du vielleicht sowas?
-
Hi katz_1,
...der kern des problems ist ja eigentlich, dass die anweisungon error goto errorHandler scheinbar gar nicht funktioniert beim zweiten fehler...
natürlich wird dein zweiter Fehler ignoriert, weil du immernoch in der Fehlerbehandlung des ersten Fehlers bist!!!
Du must mit Resume arbeiten, sonst wird das nie was!
(Meinetwegen auch mit Resume Sprungmarke)
-
Hi katz_1,
was ist denn das für eine Fehlernehandlung (mit GOTO!!!)?
Das ist mehr als übel!
Ausserdem musst du in der Fehlerbehandlung mit RESUME arbeiten, um weiterzumachen!
Hier mal ein Grundgerüst für die Fehlerbehandlung:
Private Sub MySub()
On Error GoTo ErrorHandler
...
Step1:
...
Exit Sub
ErrorHandler:
Dim ErrNumber, ErrDescription
ErrNumber = Err.Number
ErrDescription = Err.Description
Select Case ErrNumber
Case ???
Resume
Case ???
Resume Next
Case ???
Resume Step1
Case Else
MsgBox ErrDescription, , "Fehler " & ErrNumber
End
End Select
End Sub
[/PHP] -
Hi,
mal abgesehen davon, dass in der Funktion int teil() die Variable argv nicht übergeben wurde, und dann auch noch falsch eingesetzt ist...
int teil()
{
char string1[20];
sprintf(string1, "Hallo %s", argv[]);
. . .
}
... und selbst wenn man es richtig macht, ist die Zuweisung mit sprintf() so mehr als kritisch!
int teil(char* value)
{
char string1[20];
sprintf(string1, "Hallo %s", value);
. . .
}
[/PHP]Das funktioniert nämlich nur solange keine Zeichenfolge länger 13 Zeichen eingegeben wurde!!!!
Ändere das bitte!
-
Hi Akim79,
wie wärs damit?
Option Explicit
Sub test()
Dim row%, column%
Dim value
For row = 1 To 3
value = Tabelle1.Cells(row, 1)
Next row
For column = 1 To 3
value = Tabelle1.Cells(1, column)
Next column
End Sub
[/PHP] -
Hi,
das sagt die F1-Hilfe:
CreateProcess
The CreateProcess function creates a new process and its primary thread. The new process executes the specified executable file.
BOOL CreateProcess(
LPCTSTR lpApplicationName,
// pointer to name of executable module
LPTSTR lpCommandLine, // pointer to command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes
BOOL bInheritHandles, // handle inheritance flag
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // pointer to new environment block
LPCTSTR lpCurrentDirectory, // pointer to current directory name
LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO
LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
);
[/PHP]Der Inhalt von lpCommandLine ist typischerweise:
"test.exe"
"c:\\program files\\test.exe"
".\\weiterer ordner\\test.exe"
-
-
in diesem fall musst du umschliessende Hochkommas verwenden:
...wer lesen kann ist klar im Vorteil
trotzdem, keine Ursache
-
Hi,
in diesem fall musst du umschliessende Hochkommas verwenden:
MP3Filename = Chr(34) & "c:\test mit langem namen.mp3" & Chr(34)
[/PHP] -
-
-
-
alles perfekt!
Das mit dem Starten funktioniert allerdings auch nur dann, wenn du die im Programmers Notepad die Datei geöffnet hast, die vom Namen her genauso heist wie die exe!
Bsp: Modul "Hello.cpp"
EXE-Datei: "HELLO.EXE"
Und die Exe Datei muss sich im gleichen Verzeichnis befinden wie das Modul.
Wenns jetzt immer noch nicht geht, dann weis ich auch nicht weiter!
(PS.: Ich hab die Version 2.05.48)
-
Oh, jetzt bin ich wohl zu spät dran. :beagolisc
Aber das hier hatte ich gerade fertig:
Const ANZVALUES = 6
Private Sub CommandButton1_Click()
Dim rowIndex%, colIndex%, index%, i%
Dim itemName$
Dim zufall%
Dim zArray(ANZVALUES) As Integer
rowIndex = 1 'Startzeile (bitte anpassen!)'
colIndex = 2 'Startreihe (bitte anpassen!)'
Randomize Timer
For i = 0 To ANZVALUES - 1
zArray(i) = -1 'Werte initialisieren'
Next i
For index = 0 To ANZVALUES - 1
Do
zufall = Rnd(1) * 5 'Zufallswerte 0 bis 5'
For i = 0 To ANZVALUES - 1
If zufall = zArray(i) Then
zufall = -1
Exit For
End If
Next i
Loop While zufall < 0
zArray(index) = zufall 'Zufallswert merken'
itemName = "TextBox" & index + 1
UserForm1.Controls.Item(itemName).Text = Tabelle1.Cells(rowIndex + zufall, colIndex)
Next index
End Sub
[/PHP]vielleicht bringt's ja noch was...
-
Hi,
entweder du hast eine falsche Angabe beimTool Property Command gemacht, oder deine Batch hat kein pause-Befehl am Ende.
Wetten?
-
nein brauchst du nicht!
bei mir tut's doch auch. Hast du bei der Option
Console I/O: Capture output
auch wirklich den Haken rausgenommen, wie ich empfohlen hatte? Solange dort ein Haken sitzt, gibts auch keine Ausgabe!
Und verwendest du die Version 2? Nur mit der funktionierts.
Übrigens setze mal in der DOS-Box 'nen cmd Befehl ab. Was passiert?
Augenscheinlich nichts. Aber in Wahrheit wird ein weiterer cmd-Prozess im Hintergrund gestartet (siehe Task Manager). Und du must zweimal exit eingeben, um die DOS-Box zu verlassen.
-
Hi Scorpio,
das hier hilft dir weiter:
Starten eines beliebigen Programmes als Service unter Windows NT/2000/XP
probleme mit comm-schnittstelle
in Basic
Geschrieben
Hi jasso,
arbeitest du mit einer sehr niedrigen Baudrate?
Es scheint, als ob nicht schnell genug Daten am Port ankommen.
Mein letzter Tip wäre in der Do-While-Schleife vor DoEvents ein call Sleep(10) einzubauen.
Dadurch wird 10 ms gewartet, bevor der InBuffer erneut geprüft wird.
Sleep() ist eine API-Funktion, die du so deklarierst: